-
创建Configuration对象
-
获取sessionfactory对象
-
获取session
-
开启事务transaction
public class HibernateUtil {
private static final SessionFactory FACTORY=buildSessionFactory(); //建一个session工厂
private static final ThreadLocal<Session> THREAD_LOCAL=new ThreadLocal<>();
//保证线程安全,构建一个线程锁,保证该线程未结束前不会被占用
/**
* 创建sessionfactory
* @return
*/
public static SessionFactory buildSessionFactory() {
// TODO Auto-generated method stub
Configuration configuration = new Configuration().configure();
return configuration.buildSessionFactory();
}
/**
* 获取session,单例模式
*/
public static Session getSession(){
Session session= THREAD_LOCAL.get();
if (session==null) {//如果session是空的,打开一个session
session=FACTORY.openSession();
}
THREAD_LOCAL.set(session);//保存session
return session;
}
/**
* 关闭session
*/
public static void closeSession(){
Session session= THREAD_LOCAL.get();
if (session!=null) {
session.close();
THREAD_LOCAL.set(null);
}
}
}