`

ThreadLocal在hiberate中的使用

 
阅读更多
public class HibernateUtil { 
   2.        public static final SessionFactory sessionFactory; 
   3.        static { 
   4.            try { 
   5.                  sessionFactory = new Configuration().configure() 
   6.                                    .buildSessionFactory(); 
   7.            } catch (Throwable ex) { 
   8.                 throw new ExceptionInInitializerError(ex); 
   9.            } 
  10.        } 
  11.        public static final ThreadLocal session =  
  12.                                             new ThreadLocal(); 
  13.        public static Session currentSession() throws HibernateException { 
  14.                Session s = session.get(); 
  15.                if(s == null) { 
  16.                      s = sessionFactory.openSession(); 
  17.                      session.set(s); 
  18.                } 
  19.                return s; 
  20.        } 
  21.        public static void closeSession() throws HibernateException { 
  22.                 Session s = session.get(); 
  23.                 if(s != null) { 
  24.                       s.close(); 
  25.                 } 
  26.                 session.set(null); 
  27.        } 
  28. }
分享到:
评论

相关推荐

    ThreadLocal的几种误区

    1. 存储当前会话用户信息:例如,可以在一个线程中使用ThreadLocal保存用户的登录状态,确保每个线程只处理一个用户的信息。 2. 存放上下文变量:如WebWork的ActionContext,它可以保存请求处理过程中的各种上下文...

    ThreadLocal源码分析和使用

    ThreadLocal 的使用非常广泛,例如在 Spring 和 Hibernate 中都大量使用了 ThreadLocal。下面是一个使用 ThreadLocal 的具体例子: ```java public class SequenceNumber{ //通过匿名内部类覆盖 ThreadLocal 的 ...

    hibernate中session的管理

    本篇文章将详细探讨Hibernate中Session的管理,特别是如何利用ThreadLocal解决并发问题。 首先,SessionFactory是Hibernate的核心组件,它是一个线程安全的工厂类,用于创建Session实例。SessionFactory通常在应用...

    正确理解ThreadLocal.pdf

    ### 正确理解ThreadLocal:深入解析其工作原理与应用场景 #### 一、ThreadLocal的基本...因此,在使用`ThreadLocal`时,应当充分理解其工作机制,合理规划其生命周期,并适时进行资源清理,以确保系统的稳定性和性能。

    day36 11-Hibernate中的事务:当前线程中的session

    本文将深入探讨Hibernate中的事务处理,特别是“当前线程中的Session”这一概念,以及如何在实际开发中有效地利用它。 在Hibernate中,Session是与持久化层交互的主要接口,它负责对象的持久化、检索、更新和删除等...

    Hibernager_Session_Manager_ThreadLocal

    总结起来,"Hibernage_Session_Manager_ThreadLocal"是一个关于使用ThreadLocal在多线程环境中优化Hibernate Session管理的技术实践,通过这种方式可以提升应用程序的性能和安全性。`HibernateUtil.java`是实现这一...

    JAVA ThreadLocal类深入

    例如,HibernateUtil类中会定义一个ThreadLocal变量来保存SessionFactory创建的Session实例,便于在多线程环境下安全地使用。 ```java public class HibernateUtil { private static final ThreadLocal<Session> ...

    Hibernate用ThreadLocal模式(线程局部变量模式)管理Session

    总的来说,ThreadLocal模式在Hibernate中用于管理Session,解决了多线程环境下Session的共享问题,实现了线程间的隔离,提高了系统的稳定性和效率。通过合理地使用ThreadLocal,开发者可以构建出更高效、更安全的多...

    hibernate常用方法集合

    `cfg.buildSessionFactory()`则根据配置创建SessionFactory单例,SessionFactory是负责创建Session实例的工厂类,它是线程安全的,适合在多线程环境中使用。 2. **ThreadLocal Session模式** `Hibernate...

    java 中ThreadLocal 的正确用法

    例如,在 HibernateUtil 类中,我们可以定义一个 ThreadLocal 变量来保存 Hibernate 的 Session。 ```java public class HibernateUtil { private static Log log = LogFactory.getLog(HibernateUtil.class); ...

    8个案例详解教会你ThreadLocal.docx

    例如,Spring 中的 TransactionTemplate 和 AOP 模块利用 `ThreadLocal` 存储当前事务信息,Hibernate 中的 Session 管理也依赖于 `ThreadLocal` 来保持线程绑定的 Session。 7. **线程安全** - `ThreadLocal` ...

    hibernate

    可以使用 `ThreadLocal` 变量来解决这个问题,确保每个线程都有自己的 `Session` 实例。 #### 三、使用 Hibernate 的基本步骤 **1. 创建 Configuration 对象** ```java Configuration config = new Configuration...

    hibernate源码分析一[启动过程]

    `CurrentSessionContext`接口定义了如何获取当前线程上的`Session`实例,而`ThreadLocalSessionContext`是一种实现,它使用线程本地存储(ThreadLocal)来维护每个线程上的`Session`实例,适用于web应用中的多线程...

    Hibernate 课件_HQL

    在Hibernate中,通常使用`ThreadLocal`来管理`Session`,确保每个线程拥有自己的`Session`实例,从而避免并发问题。 - **示例**: - 创建一个`ThreadLocal`实例来管理`Session`: - `private static ThreadLocal...

    基于Hibernate的数据持久层关键技术的研究

    2. **ThreadLocal模式**:在多线程环境下,使用ThreadLocal来管理Hibernate的Session可以避免线程安全问题。每个线程都有自己的Session实例,这样可以确保数据访问的线程安全性。 3. **静态工厂方法**:为了提高...

    在Eclipse下开发Hibernate.pdf

    在Eclipse中开发Hibernate主要涉及以下几个关键知识点: 1. **Eclipse集成开发环境**: Eclipse是Java开发者常用的IDE,它提供了一整套工具来支持代码编写、调试和项目管理。在这个场景中,Eclipse被用来创建和管理...

    java之hibernate和spring技术难点及其要点总结

    5. **参数设置**:了解如何在Hibernate中设置各种类型的参数对于高效利用框架至关重要。 6. **主键生成策略**:Hibernate支持多种主键生成策略,如自动增长(auto)、序列(sequence)等,选择合适的策略可以有效提升...

    hibernate概述

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了Java应用中的数据库操作。以下是对Hibernate基础知识的详细解释: 1. **持久化操作**: Hibernate ...

Global site tag (gtag.js) - Google Analytics