⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernateutil.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.utils;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
	private static SessionFactory sessionFactory=null;
	private static String path=Common.decode(Thread.currentThread().getContextClassLoader().getResource("../../config.properties").getPath());
	private static String message = null;
	static{
		buildSessionFactory();
	}
	public static synchronized void buildSessionFactory()
	{
		if(sessionFactory==null){
			try {
				Properties properties = new Properties();
				InputStream fis = new FileInputStream(path);
				properties.load(fis);
				fis.close();
				String dbhost=properties.getProperty("dbhost");
				String dbport=properties.getProperty("dbport");
				String dbname=properties.getProperty("dbname");
				String dbuser=properties.getProperty("dbuser");
				String dbpw=properties.getProperty("dbpw");
				if(mysql_connect(dbhost,dbport,dbname,dbuser,dbpw))
				{
					Properties extraProperties = new Properties();
					extraProperties.setProperty("hibernate.connection.url", "jdbc:mysql://"+dbhost+":"+dbport+"/"+dbname+"?zeroDateTimeBehavior=convertToNull");
					extraProperties.setProperty("hibernate.connection.username", dbuser);
					extraProperties.setProperty("hibernate.connection.password", dbpw);
					Configuration configuration = new Configuration();
					configuration=configuration.configure("hibernate.cfg.xml");
					configuration=configuration.addProperties(extraProperties);
					sessionFactory=configuration.buildSessionFactory();
					extraProperties=null;
					configuration=null;
				}
				properties=null;
			} catch (Exception e) {
				message="创建sessionFactory出现异常!"+e.getMessage();
			}
		}
	}
	public static SessionFactory getSessionFactory()
	{
		if(sessionFactory==null){
			 buildSessionFactory();
		}
		return sessionFactory;
	}
	public static Session getSession()
	{
		if(sessionFactory==null){
			buildSessionFactory();
		}
		return sessionFactory.getCurrentSession();
	}
	public static void rebuildSessionFactory()
	{
		try {
			Properties properties = new Properties();
			InputStream fis = new FileInputStream(path);
			properties.load(fis);
			fis.close();
			String dbhost=properties.getProperty("dbhost");
			String dbport=properties.getProperty("dbport");
			String dbname=properties.getProperty("dbname");
			String dbuser=properties.getProperty("dbuser");
			String dbpw=properties.getProperty("dbpw");
			if(mysql_connect(dbhost,dbport,dbname,dbuser,dbpw))
			{
				Properties extraProperties = new Properties();
				extraProperties.setProperty("hibernate.connection.url", "jdbc:mysql://"+dbhost+":"+dbport+"/"+dbname+"?zeroDateTimeBehavior=convertToNull");
				extraProperties.setProperty("hibernate.connection.username", dbuser);
				extraProperties.setProperty("hibernate.connection.password", dbpw);
				Configuration configuration = new Configuration();
				configuration=configuration.configure("hibernate.cfg.xml");
				configuration=configuration.addProperties(extraProperties);
				sessionFactory=configuration.buildSessionFactory();
				extraProperties=null;
				configuration=null;
			}
			properties=null;
		} catch (Exception e) {
			message="创建sessionFactory出现异常!"+e.getMessage();
		}
	}
	public static boolean mysql_connect(String dbhost,String dbport,String dbname,String dbuser,String dbpw){
		Connection conn = null;
		boolean flag=false;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection("jdbc:mysql://"+dbhost+":"+dbport+"/"+dbname,dbuser,dbpw);
			if(conn!=null)
			{
				if(!conn.isClosed()){
					conn.close();
					conn=null;
				}
				return true;
			}
		} catch (Exception ex) {
			message = ex.getMessage();
		}
		return flag;
	}
	public static String getMessage() {
		return message;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -