1、getCurrentSession()与openSession()的区别?

  • 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession(),创建的session则不会
  • 采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession(),创建的session必须手动关闭

2、使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:

  • 如果使用的是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
  • 如果使用的是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property>

openSession() 与 getCurrentSession() 有何不同和关联呢?

在 SessionFactory 启动的时候, Hibernate 会根据配置创建相应的 CurrentSessionContext ,在getCurrentSession() 被调用的时候,实际被执行的方法是 CurrentSessionContext.currentSession() 。在currentSession() 执行时,如果当前 Session 为空, currentSession 会调用 SessionFactory 的 openSession 。所以 getCurrentSession() 对于 Java EE 来说是更好的获取 Session 的方法。

许多时候出现session is close();原因就是你在hibernate.cfg.xml里面设置了

<property name="hibernate.current_session_context_class">thread</property>

系统在commit();执行完之后就关闭了session,这时候你手动再关闭session就当然提示错误了

getCurrentSession()与openSession()的区别?相关推荐

  1. hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别

    1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会. 2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而ope ...

  2. SessionFactory.getCurrentSession与openSession的区别

    SessionFactory.getCurrentSession与openSession的区别 1. 如果使用的是getCurrentSession来创建session的话,在commit后,sess ...

  3. Hibernate getCurrentSession()和openSession()的区别

    通过getCurrentSession()创建的Session会绑定到当前线程上:openSession()不会. 通过getCurrentSession()获取Session,首先是从当前上下文中寻 ...

  4. Sessionfactory.getCurrentSession与 openSession() 的区别

    1. getCurrentSession创建的session会和绑定到当前线程,而openSession不会. 2. getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而o ...

  5. sessionFactory.getCurrent()和sessionFactory.openSession()的区别

    sessionFactory.getCurrentSession()可以完成一系列的工作,当调用时, hibernate将session绑定到当前线程,事务结束后,hibernate 将session ...

  6. Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢...

    新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...

  7. 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分

    一.什么是ThreadLocal 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简 ...

  8. Hibernate面试题分析

    Hibernate面试题分析 1. Hibernate 的检索方式有哪些 ? ① 导航对象图检索  ② OID检索  ③ HQL检索  ④ QBC检索  ⑤ 本地SQL检索 2. 在 Hibernat ...

  9. atitit.spring hibernate的事务机制 spring不能保存对象的解决

    atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能..log黑头马sql语言.. sessionF ...

最新文章

  1. union all会影响性能吗_Java 中的 try catch 影响性能吗?
  2. 数据结构与算法笔记(四)—— 栈
  3. ITK:从均匀矩阵应用仿射变换并重新采样
  4. SylixOS中select原理及使用分析
  5. 【渝粤教育】国家开放大学2018年春季 0064-22T20世纪欧美文学 参考试题
  6. Linux基础(文件权限续篇)
  7. 去除input填充颜色
  8. 【C语言】结构和指针
  9. c++工程模式+配置文件+动态调用类
  10. knocout搭建静态html,Knockout 官方中文文档 - 爱整理
  11. Kmalloc申请内存源码分析
  12. 全球计算机科学与技术排名,最新全球高校“计算机科学与信息系统”排名,哪些985表现出色?...
  13. atitit.编程语言 类与对象的 扩展机制.doc
  14. 【A Neural Algorithm of Artistic Style】 Pics
  15. win10系统使用蓝牙鼠标时自动断开连接?
  16. php-fpm status,使用php-fpm状态页观察当前的php-fpm状态
  17. 时间复杂度简述及例题
  18. 在ASP.NET开发中一些单词的标准缩写
  19. 遇到问题–python–pytest: error: unrecognized arguments: --cov-report=html
  20. 解决SVN文件夹上边没有对号感叹号等符号的问题

热门文章

  1. Android开发8:UI组件TextView,EditText,Button
  2. apache常用的配置指令:ServerRoot
  3. ccna实验配置个人总结
  4. 深入剖析微软ASP.NET Ajax中的数据绑定构架下篇之二
  5. 噪声强度(噪声功率) 噪声方差到底有什么关系?
  6. 物联网管理软件的设计
  7. Android自定义Application的作用
  8. 4kyu Sums of Perfect Squares
  9. 10月25日lol服务器维护,《LOL》lol10月25日停机维护到什么时候 10.25维护结束时间...
  10. php是什么症状脾虚什么症状怎么治,脾虚的5个症状是什么呢