用户登录
用户注册

分享至

hibernate的单列

  • 作者: 俺是一朵云
  • 来源: 51数据库
  • 2020-10-16

使用线程单列模式获得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相关