`
Jameslyy
  • 浏览: 408971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ThreadLocal 在 Hibernate 中的应用

阅读更多
java 代码
  1. public static final ThreadLocal session = new ThreadLocal();      
  2. public static Session currentSession() throws HibernateException {      
  3.        Session s=(Session)session.get();      
  4.        //打开一个新的session,如果这个线程还不存在的话      
  5.        if(s==null) {      
  6.              s=sessionFactory.openSession();      
  7.              session.set(s);      
  8.        }      
  9.        return s;      
  10. }
        通过一个ThreadLocal对象为每个单独的线程保存并使用一份自己的Session。这就ThreadLocal所起到的作用,为每一个线程保存一份独立的变量副本。在本例中通过ThreadLocal实现了并发访问并使用了单例模式。
分享到:
评论

相关推荐

    hibernate中session的管理

    2. **Session per Thread**:在多线程应用中,可以为每个工作线程分配一个Session,这种方法适用于多线程但无HTTP请求的场景,比如批处理。 3. **Open Session in View (OSIV)**:在视图渲染阶段保持Session打开,...

    ThreadLocal的几种误区

    3. 存储数据库会话:在Spring Hibernate ORM中,ThreadLocal常用来保存数据库连接的Session,确保每个线程有自己的Session,避免线程间的资源冲突。 总之,ThreadLocal是一个强大的工具,但理解其工作原理和潜在...

    正确理解ThreadLocal.pdf

    在实际应用中,如上文所示的Hibernate示例,通过`set()`方法可以将`Session`对象与当前线程绑定,而`get()`方法则用于获取当前线程的`Session`对象。这种设计模式避免了在多线程环境中直接操作共享资源可能带来的...

    Hibernager_Session_Manager_ThreadLocal

    8. **缺点与注意事项**:ThreadLocal使用不当可能导致内存泄漏,尤其是在Web应用中,需要确保在Web请求结束时清理ThreadLocal。此外,过多的ThreadLocal变量也可能增加内存消耗。 总结起来,"Hibernage_Session_...

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

    在Web应用中,通常使用Servlet容器如Tomcat,它支持ThreadLocal机制,能够为每个请求创建并维护一个独立的Session对象。这种方式称为“ThreadLocal Session”。 使用ThreadLocal Session的一个关键好处是事务的自动...

    JAVA ThreadLocal类深入

    Java中的ThreadLocal类是一种线程绑定机制,用于在多线程环境中为每个线程提供独立的变量副本,避免了线程间的数据共享带来的并发访问问题。ThreadLocal并不是一个线程对象,而是线程局部变量,即...

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

    【ThreadLocal模式管理Session的理解】 在使用Hibernate进行数据库操作时,正确管理Session是优化系统性能的关键。...通过合理地使用ThreadLocal,开发者可以构建出更高效、更安全的多线程Hibernate应用。

    hibernate常用方法集合

    `HibernateSessionFactory` 类是Hibernate应用中常见的一个工具类,用于管理和提供与当前线程相关的Session实例。让我们详细了解一下`HibernateSessionFactory`类中的关键方法和其背后的原理。 1. **配置和初始化...

    hibernate

    - **PO (Persistent Objects 持久化对象)**:这些是应用程序中的 Java 对象,它们的状态可以通过 Hibernate 持久化到数据库中。 - **hibernate.cfg.xml**:这是一个核心配置文件,用于设置 Hibernate 连接到特定...

    java 中ThreadLocal 的正确用法

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

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

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

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

    - 在面试中,可能会遇到关于 `ThreadLocal` 生命周期管理、内存泄漏、与 `synchronized` 的比较以及在实际应用中的场景分析等问题。 通过以上介绍,我们可以了解到 `ThreadLocal` 在处理多线程环境中提供了独特的...

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

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

    在Eclipse下开发Hibernate.pdf

    SessionFactory在应用启动时创建一次,之后在整个应用生命周期中重复使用。 8. **Session对象**: Session是与数据库交互的主要接口,负责执行查询、保存或更新对象。在HibernateUtil类中,`currentSession()`方法...

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

    在Java开发领域,Hibernate和Spring作为两个非常重要的框架,对于提高应用程序的开发效率、降低维护成本具有不可替代的作用。本文将针对这两个技术栈中的关键知识点进行深入探讨,并结合实际应用场景,帮助开发者更...

    2.Hibernate-02-一级缓存详细教案1

    在本教程中,我们将探讨如何通过优化配置和代码来提升Hibernate应用的性能。 ### 4. Hibernate其他概念 除了上述内容,Hibernate还包括实体类的定义、映射文件的编写、查询语言(HQL)的使用、Criteria API等。...

    课程hibernate的事务和并发.pdf

    在多用户客户端/服务器应用中,最常用的模式是“session-per-request”,即每个客户端请求对应一个Session,所有的数据库操作都在这个Session内完成,Session在请求结束时同步并关闭,事务也在此时提交。 实现...

Global site tag (gtag.js) - Google Analytics