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

Hibernate里sessionFactory的openSession()和getCurrentSession()的区别

阅读更多

session.openSession()和session.getCurrentSession()两个方法都是得到session对象,但是区别是:

openSession()每次得到的都是新的session对象,用完后要手动close()。

getCurrentSession()是从上下文(上下文有两种:一种是thread,主要是从数据库来界定它的事务;一种是jta,采用分布式来界定它的事务,jta要运行的时候需要applicationserver即应用服务器的支持)找,如果有session对象,则用旧的,如果没有,则建一个新的session,事务提交后自动closeSession()。

注:什么时候要用到currentSession呢,比如在添加用户的时候,是往user表添加一条数据,但如果要在添加user的同时也向日志表添加一条记录,用hibernate来实现的话,这两个添加方法的操作理应放在同一个事务里面,要么同时提交,要么回滚。

分享到:
评论

相关推荐

    新Hibernate SessionFactory().getCurrentSession()猫腻

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

    SessionFactory.getCurrentSession与openSession的区别

    理解 `SessionFactory.getCurrentSession()` 和 `Session.openSession()` 的区别对于优化和正确使用Hibernate至关重要。 首先,`SessionFactory` 是Hibernate中的一个接口,它是一个全局的、线程安全的工厂类,用于...

    getCurrentSession 与 openSession() 的区别

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

    ssh中getCurrentSession的使用

    在Hibernate中,`getCurrentSession()`是SessionFactory类的一个方法,它用于获取当前线程绑定的Session对象。这个方法在处理数据库操作时非常有用,因为每个HTTP请求通常对应一个独立的线程,每个线程都应该有自己...

    Hibernate4Spring3

    在Spring中,我们可以使用`SessionFactory.openSession()`或`SessionFactory.getCurrentSession()`方法获取Session实例。 4. **事务管理**:Spring提供了声明式事务管理,只需在方法上添加@Transactional注解,即可...

    HIBERNATE4开发文档,HIBERNATE4的变化

    - 错误2:`java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session` - 解决方案:由于Hibernate4移除了HibernateDaoSupport,需要改写DAO层,直接使用Hibernate...

    Hibernate的框架的总结

    本文详细介绍了Hibernate框架中的核心配置文件`hibernate.cfg.xml`及其配置项、映射文件`xxx.hbm.xml`,以及核心API如Configuration和SessionFactory的使用方法,并对C3P0连接池进行了简要说明。通过这些内容的学习...

    hibernate.jar包

    - 获取Session:通过SessionFactory的openSession()或getCurrentSession()获取Session实例。 - 开启事务:在Session上开始一个新的数据库事务。 - 对象操作:执行增删改查操作,如save()、update()、delete()、...

    hibernate-spring整合

    在Spring中,我们可以使用SessionFactory的openSession()或getCurrentSession()方法获取Session实例。 4. **事务管理**: Spring提供PlatformTransactionManager接口,可以用来管理数据库事务。在Hibernate整合中,...

    hibernate登录页面测试

    在Hibernate中,我们可以使用Session工厂(SessionFactory)和Session对象来实现。SessionFactory是线程安全的,用于创建Session对象,而Session是数据库会话,用于执行CRUD操作。 ```java private SessionFactory ...

    hibernate 4.3.10 版本的笔记

    通过以上步骤和细节的介绍,我们对Hibernate 4.3.10版本有了较为全面的理解,包括环境搭建、实体映射、SessionFactory和Session的使用,以及生命周期状态的概念等。这对于开发者来说是非常宝贵的知识点,能够帮助...

    Hibernate说明文档.rar_ajax_hibernate

    Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); // set user properties... session.save(user); tx.commit(); session.close(); ``` #...

    2020版Hibernate 12 道.pdf

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

    开始冬眠_Hibernate教程

    Session session = sessionFactory.getCurrentSession(); session.save(stu); } // 其他方法省略 } ``` #### 总结 通过上述内容的学习,我们可以看出Hibernate作为一款强大的ORM框架,极大地简化了数据库...

    Spring与Hibernate集成中的session

    - 创建`Session`:`SessionFactory.openSession()`或`SessionFactory.getCurrentSession()`(在已配置的事务环境下)。 - 事务开始:`Session.beginTransaction()`。 - 数据操作:如`Session.save()`, `Session....

    hibernate关于session的关闭实例解析

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

    Hibernate3.6(开发必看).pdf

    Session session = sessionFactory.openSession(); ``` 代码展示了如何从配置文件中读取配置信息,构建SessionFactory,再通过SessionFactory来创建Session。 4. ORM映射文件(.hbm.xml)的示例: ```xml <!...

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

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

    hibernate的事务核并发

    1. **开启Session**:通过`SessionFactory`的`openSession()`方法创建一个`Session`对象。 2. **启动事务**:调用`Session`对象的`beginTransaction()`方法开始一个新的事务。 3. **执行业务逻辑**:在这一步中,...

Global site tag (gtag.js) - Google Analytics