package cn.com.hibernateUtil;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
//Session线程不安全,让多个线程共享一个Session对象就可能会引起数据的冲突和混乱,所以引入ThreadLocal对象
//避免多个现场之间的数据共享问题
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
static {
try {
// Configuration().configure() 加载Hibernate配置文件
//Configuration().configure().buildSessionFactory(); 创建会话工厂
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
session = (sessionFactory != null) ? sessionFactory.openSession(): null;
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
}
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
//Session线程不安全,让多个线程共享一个Session对象就可能会引起数据的冲突和混乱,所以引入ThreadLocal对象
//避免多个现场之间的数据共享问题
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
static {
try {
// Configuration().configure() 加载Hibernate配置文件
//Configuration().configure().buildSessionFactory(); 创建会话工厂
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
session = (sessionFactory != null) ? sessionFactory.openSession(): null;
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
}