package top.dragong;
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.service.*;
/**
* Description:
* @author VipMao
* @version 1.0
*/
/**
* 该工具类提供了一个属性:SessionFactory sessionFactory 并创建了sessionFactory 将它设置成static
* 这样其他程序就可以直接通过此工具类引用 提供了二个方法: 1:通过线程创建Session-->currentSession()
* 2:关闭Session-->closeSession() 需要在主类中手动关闭sessionFactory
*/
public class HibernateUtil {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> sessionThreadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
configuration.configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
private HibernateUtil() {
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (HibernateException e) {
e.printStackTrace();
}
}
public static Session getSession() {
Session session = (Session) sessionThreadLocal.get();
try {
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
}
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
sessionThreadLocal.set(session);
} catch (HibernateException e) {
e.printStackTrace();
}
return session;
}
public static void closeSession() {
Session session = (Session) sessionThreadLocal.get();
sessionThreadLocal.set(null);
try {
if (session != null && session.isOpen()) {
session.close();
}
} catch (HibernateException e) {
e.printStackTrace();
}
}
public static void setConfigFile(String configFile) {
HibernateUtil.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
最近下载更多
13043860zj LV16
2020年8月20日
段朝洪 LV15
2019年11月25日
caozhou LV14
2019年3月11日
我的名字是凑得 LV8
2018年12月23日
wangmeng20 LV14
2018年11月1日
z980693651 LV10
2018年10月20日
wlzyf冰冰 LV13
2018年7月5日
gongjunjienb LV15
2018年6月2日
mkl_mzq LV10
2018年5月16日
812992358 LV11
2018年5月8日

最近浏览