Hibernate 笔记(2)-封装HibernateSessionFactory
来源:互联网 发布:ledrom编辑软件 编辑:程序博客网 时间:2024/05/01 06:14
因为Session是线程不安全的,为了保证当前线程只有一个session对象,并且当前线程中的Session不能让其他线程来访问,需要将获取Session的方法进行封装,为了保证Session的线程安全性,需要将Session放到ThreadLocal中。
ThreadLocal为线程本地变量
封装过程:(非常重要)
public class HibernateSessionFactory { private static String configFile ="/hibernate.cfg.xml"; //声明一个线程本地变量,用来存放当前中的Session,保证不让其他线程访问到 private static ThreadLocal<Session> threadLocal = new ThreadLocal<>(); private static Configuration config = new Configuration(); private static SessionFactory sessionFactory; static { //读取配置文件 config.configure(configFile); //创建sessionFactory sessionFactory = config.buildSessionFactory(); } //获取session public static Session getSession() { /*当获取Session的时候先到当前线程的本地变量中寻找,如果有直接返回, *如果有直接返回,如果没有或者当前线程已经关闭需要重新开启一个Session *,返回,并且放到当前线程中 */ Session session = threadLocal.get(); if(session == null || !session.isOpen()){ session =(sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } //关闭session public static void close(){ /* *关闭的时候先到当前线程中的本地变量中拿到session,如果可以取到,直接关闭 *最后将本地变量清空 */ Session session = threadLocal.get(); threadLocal.set(null); if(session!=null){ session.close(); } }}
0 0
- Hibernate 笔记(2)-封装HibernateSessionFactory
- HIbernate介绍(配置文件、HibernateSessionFactory)
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- hibernatesessionfactory
- HibernateSessionFactory
- hibernate操作摘要(采用HibernateSessionFactory方式)
- hibernate操作摘要(采用HibernateSessionFactory方式)
- 如何理解Hibernate中的HibernateSessionFactory类
- 如何理解Hibernate中的HibernateSessionFactory类
- 如何理解Hibernate中的HibernateSessionFactory类
- 如何理解Hibernate中的HibernateSessionFactory类
- 如何理解Hibernate中的HibernateSessionFactory类
- hibernate包的导入,这样才可以正常使用hibernateSessionFactory
- 读书笔记|《第一行代码android》之组件篇
- Android中的Web Service学习(一)——Web Service介绍
- maven工程引用仓库中没有的包
- Java集合Map<K,V>,HashMap<K,V>的使用,for循环正解
- Layer2交换机QinQ和VTP
- Hibernate 笔记(2)-封装HibernateSessionFactory
- 如何使用OpenCV函数 remap 来实现简单重映射
- js实现表格添加数据
- 把过程与函数说透
- Windows安装WAMP详细教程
- sublime text3打开文件,中文乱码问题解决办法
- javax.servlet.*需要的两个包
- hdu 3866 Moonfang's Birthday 排序?贪心?二分?思维?
- 程序包的创建与应用