用户登录
用户注册

分享至

hibernate 单例模式

  • 作者: 哀思沫
  • 来源: 51数据库
  • 2020-12-23

使用线程单列模式获得org.hibernate.Session对象
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class HibernateSessionFactory {


 private static Configuration conf;
 private static SessionFactory sf;
 private static ThreadLocal<Session> tl = new ThreadLocal<Session>();


         //ThreadLocal<Session>内部是Map结构,用线程id作为key值,用来存放多个Session对象


 static {
  conf = new Configuration();
  conf.configure();
  sf = conf.buildSessionFactory();
 }


 public static Session getSession() {
  Session session = tl.get();//以当前线程的id作为Key,取出一个Session对象
  if (session == null) {
   session = sf.openSession();//如果为空,则获取一个新的Session对象,并存入tl中
   tl.set(session);
  }
  return session;
 }


 public static void closeSession() {//关闭一个session
  Session session = tl.get();//以当前线程的id作为Key,取出一个Session对象

  if (session != null) {//如果不为空,怎关闭
   session.close();
   tl.set(null);
  }
 }
}

软件
前端设计
程序设计
Java相关