Hibernate ThreadLocal
来源:互联网 发布:淘宝团购提醒在哪里 编辑:程序博客网 时间:2024/06/16 16:02
Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate ThreadLocal,包括介绍Hibernate官方开发手册标准示例等方面。
Hibernate ThreadLocal
它会为每个线程维护一个私有的变量空间。实际上, 其实现原理是在JVM 中维护一个Map,这个Map的key 就是当前的线程对象,而value则是 线程通过Hibernate ThreadLocal.set方法保存的对象实例。当线程调用Hibernate ThreadLocal.get方法时, Hibernate ThreadLocal会根据当前线程对象的引用,取出Map中对应的对象返回。
这样,Hibernate ThreadLocal通过以各个线程对象的引用作为区分,从而将不同线程的变量隔离开来。
Hibernate官方开发手册标准示例:
public class HibernateUtil { private static SessionFactory sessionFactory; static { try { // Create the SessionFactory sessionFactory = new Configuration(). configure().buildSessionFactory(); } catch (HibernateException ex) { throw new RuntimeException( "Configuration problem: " + ex.getMessage(), ex ); } } public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException { Session s = (Session) session.get(); // Open a new Session, if this Thread has none yet if (s == null) { s = sessionFactory.openSession(); session.set(s); } return s; } public static void closeSession() throws HibernateException { Session s = (Session) session.get(); session.set(null); if (s != null) s.close(); } }通过filter实现session的重用:
public class PersistenceFilter implements Filter { protected static ThreadLocal hibernateHolder = new ThreadLocal(); public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException { hibernateHolder.set(getSession()); try { …… chain.doFilter(request, response); …… } finally { Session sess = (Session)hibernateHolder.get(); if (sess != null) { hibernateHolder.set(null); try { sess.close(); } catch (HibernateException ex) { throw new ServletException(ex); } } } } …… }
- Hibernate ThreadLocal
- Hibernate中的ThreadLocal
- Hibernate ThreadLocal讲解
- 利于ThreadLocal管理Hibernate Session
- 利于ThreadLocal管理Hibernate Session
- 利于ThreadLocal管理Hibernate Session
- 用ThreadLocal,模拟Hibernate getCurrentSession()
- 利用ThreadLocal管理Hibernate Session
- 利用ThreadLocal管理Hibernate Session
- ThreadLocal 在hibernate中应用
- 利于ThreadLocal管理Hibernate Session
- 利于ThreadLocal模式管理hibernate的Session
- 关于Hibernate的threadlocal方式管理
- 利用ThreadLocal绑定Hibernate的session
- 用ThreadLocal模式管理Hibernate的session
- 使用ThreadLocal模式管理Hibernate的Session
- 利于ThreadLocal模式管理hibernate的Session
- ThreadLocal 设计模式 用于 Hibernate 框架
- 经典SQL语句大全
- C专家编程(九)
- 加快VisualStudio的开发速度--VS的一些开发技巧
- linux编程相关
- 多目录多文件[1] 简单Makefile
- Hibernate ThreadLocal
- 学习LOWORD、 HIWORD、LOBYTE、HIBYTE
- 什么是Core Dump?
- linux的NFS及mount使用方法 |
- Android实用代码
- Android 任务共用性Affinity
- 开坑预告,2013年新番来袭。
- dereferencing pointer to incomplete type错误的解决办法
- rhel6.3 没声音 解决方法之安装alsa声卡驱动