`
tangzongyun
  • 浏览: 180791 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

getCurrentSession与openSession的区别 转

    博客分类:
  • Java
阅读更多
一:getCurrentSession ()  使用当前的 session

注意:1,使用 SessionFactory.getCurrentSession() 需要在 hibernate.cfg.xml 中如下配置:
  如果采用 jdbc 独立引用程序配置如下:
    <property name="hibernate.current_session_context_class">thread</property>
  如果采用了 JTA 事务配置如下 
    <property name="hibernate.current_session_context_class">jta</property>
2,使用的是 getCurrentSession 来创建 session 的话,在 commit 后,session 就自动被关闭了,也就是不用再 session.close() 了。

二:openSession()  重新建立新的 session

注意:1,使用的是 openSession 来创建 session 的话,在 commit 后,session 必须显示的关闭,也就是调用 session.close() 方法。

在应用程序中,如果 DAO 层使用 Spring 的 hibernate 模板,通过 Spring 来控制 session 的生命周期,则应该 getCurrentSession ()。

HibernateUtil 工具类

Java代码  收藏代码
public class HibernateUtil { 
    private static final SessionFactory sessionFactory; 
 
    static { 
        try { 
            // Create the SessionFactory from standard (hibernate.cfg.xml)  
            // config file. 
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
        } catch (Throwable ex) { 
            // Log the exception.  
            System.err.println("Initial SessionFactory creation failed." + ex); 
            throw new ExceptionInInitializerError(ex); 
        } 
    } 
 
    public static SessionFactory getSessionFactory() { 
        return sessionFactory; 
    } 


使用:Session s = HibernateUtil.getSessionFactory().getCurrentSession(); 即可获取 Session
分享到:
评论

相关推荐

    SessionFactory.getCurrentSession与openSession的区别

    标题中的“SessionFactory.getCurrentSession与openSession的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...

    getCurrentSession 与 openSession() 的区别

    在Java的Hibernate框架中,`getCurrentSession()` 和 `openSession()` 都是用于获取与数据库交互的Session对象,但它们之间存在显著的区别。理解这些差异对于优化数据访问性能和管理事务至关重要。 首先,`...

    ssh中getCurrentSession的使用

    2. **为什么使用getCurrentSession()**:与直接调用`openSession()`创建新的Session相比,`getCurrentSession()`有以下优势: - 它能够自动管理Session的生命周期,比如在请求结束时关闭Session,避免资源泄露。 -...

    新Hibernate SessionFactory().getCurrentSession()猫腻

    当我们调用SessionFactory().getCurrentSession()时,Hibernate会为我们提供一个已存在的或者新创建的Session实例,这个行为与直接调用SessionFactory.openSession()有所不同。`getCurrentSession()`方法旨在支持...

    Hibernate存储Clob字段的方式总结

    同时,还探讨了Hibernate框架中getCurrentSession()与openSession()的区别。 首先,要操作数据库中的Clob字段,需要关注的是如何在Java对象与Clob字段之间进行转换。由于Clob字段通常用于存储大量文本数据,如果...

    2020版Hibernate 12 道.pdf

    11. Hibernate中getCurrentSession和openSession的区别是什么? `getCurrentSession`是用于在已有的事务上下文中获取或创建Session,确保与当前事务的一致性。而`openSession`则是直接创建一个新的Session,不考虑...

    [尚硅谷]_佟刚_Hibernate面试题分析

    8. getCurrentSession()和openSession()的区别: - getCurrentSession()会检查当前线程是否已有Session,若有则返回,若无则创建。 - openSession()方法总是创建一个新的Session。 - getCurrentSession()在事务...

    J2EE考试题目及答案定义.pdf

    openSession()和getCurrentSession()方法都是用于获取Session对象的方法,但它们有所不同。getCurrentSession创建的Session对象会和当前线程绑定,而openSession不会。getCurrentSession创建的Session对象在事务...

    hibernate关于session的关闭实例解析

    本文详细介绍了 Hibernate 中 Session 的关闭实例解析,包括 getSession() 和 openSession() 的区别、getCurrentSession() 的配置、openSession() 和 getCurrentSession() 的关联,以及 Session 的关闭。希望本文...

    SSH-Jsp期末考试简答题带答案

    2. Hibernate 中 openSession()和 getCurrentSession()的差别 Hibernate 是一个基于Java的持久层框架,它提供了对数据库的访问和操作能力。openSession()和getCurrentSession()是Hibernate中两个重要的Session创建...

    Spring视频教程(3)

    2. **编程式事务与OpenSession/GetCurrentSession的区别**: 编程式事务处理是手动管理事务边界,而OpenSession/GetCurrentSession模式则是在操作数据库时自动开启和关闭Session。这两者在事务管理和性能上有不同的...

    SSH框架部分常见面试题.pdf

    openSession 和 getCurrentSession 是 Hibernate 中的两个会话方法,openSession 用于创建新的会话,getCurrentSession 用于获取当前会话。 saveOrUpdate() 和 merge() saveOrUpdate() 和 merge() 是 Hibernate 中...

    J2EE考试题目及答案.doc

    `getCurrentSession()`创建的Session与当前线程绑定,事务结束后自动关闭,而`openSession()`则不会自动管理,需要手动关闭。`getCurrentSession()`更适用于需要在同一个事务中操作多个对象的情况。 7. **Session...

    hibernate笔记心得

    在Hibernate中,我们有两种方式来获取和管理Session:`openSession()`和`getCurrentSession()`。`openSession()`每次都会创建一个新的Session,并且在使用完毕后需要手动关闭,这适用于短生命周期的事务。而`...

    JAVAEE试题(含答案).docx

    这两个方法的区别在于,openSession()方法可以在一个线程中使用不同的Session,而getCurrentSession()方法则可以在同一线程中,保证使用同一个Session。 三、填空题解释 1. MVC的三个组成部分:MVC的三个组成部分...

    java 面试技术题汇总

    - `getCurrentSession()`和`openSession()`的区别:`getCurrentSession()`会绑定到当前线程,便于事务管理,而`openSession()`需要手动管理Session的生命周期。使用`getCurrentSession()`需要在配置文件中指定适当的...

    SSM SSH面试题整理

    - 区分getCurrentSession()与openSession()的使用场景,以及它们对于事务和性能的不同影响。 8. **Cascading和Inverse配置:** - Cascading和Inverse用于解决实体间关系的维护问题,有助于减少不必要的数据库操作...

    JAVAEE试题(含答案).pdf

    6. Hibernate 框架中的 SessionFactory 类有两个获得 session 的方法:openSession() 和 getCurrentSession()。如果需要在同一线程中,保证使用同一个 Session 则使用 getCurrentSession(),如果在一个线程中,需要...

Global site tag (gtag.js) - Google Analytics