getCurrentSession()与openSession()的区别?
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()的区别?相关推荐
- hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会. 2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而ope ...
- SessionFactory.getCurrentSession与openSession的区别
SessionFactory.getCurrentSession与openSession的区别 1. 如果使用的是getCurrentSession来创建session的话,在commit后,sess ...
- Hibernate getCurrentSession()和openSession()的区别
通过getCurrentSession()创建的Session会绑定到当前线程上:openSession()不会. 通过getCurrentSession()获取Session,首先是从当前上下文中寻 ...
- Sessionfactory.getCurrentSession与 openSession() 的区别
1. getCurrentSession创建的session会和绑定到当前线程,而openSession不会. 2. getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而o ...
- sessionFactory.getCurrent()和sessionFactory.openSession()的区别
sessionFactory.getCurrentSession()可以完成一系列的工作,当调用时, hibernate将session绑定到当前线程,事务结束后,hibernate 将session ...
- Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢...
新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...
- 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
一.什么是ThreadLocal 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简 ...
- Hibernate面试题分析
Hibernate面试题分析 1. Hibernate 的检索方式有哪些 ? ① 导航对象图检索 ② OID检索 ③ HQL检索 ④ QBC检索 ⑤ 本地SQL检索 2. 在 Hibernat ...
- atitit.spring hibernate的事务机制 spring不能保存对象的解决
atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能..log黑头马sql语言.. sessionF ...
最新文章
- union all会影响性能吗_Java 中的 try catch 影响性能吗?
- 数据结构与算法笔记(四)—— 栈
- ITK:从均匀矩阵应用仿射变换并重新采样
- SylixOS中select原理及使用分析
- 【渝粤教育】国家开放大学2018年春季 0064-22T20世纪欧美文学 参考试题
- Linux基础(文件权限续篇)
- 去除input填充颜色
- 【C语言】结构和指针
- c++工程模式+配置文件+动态调用类
- knocout搭建静态html,Knockout 官方中文文档 - 爱整理
- Kmalloc申请内存源码分析
- 全球计算机科学与技术排名,最新全球高校“计算机科学与信息系统”排名,哪些985表现出色?...
- atitit.编程语言 类与对象的 扩展机制.doc
- 【A Neural Algorithm of Artistic Style】 Pics
- win10系统使用蓝牙鼠标时自动断开连接?
- php-fpm status,使用php-fpm状态页观察当前的php-fpm状态
- 时间复杂度简述及例题
- 在ASP.NET开发中一些单词的标准缩写
- 遇到问题–python–pytest: error: unrecognized arguments: --cov-report=html
- 解决SVN文件夹上边没有对号感叹号等符号的问题
热门文章
- Android开发8:UI组件TextView,EditText,Button
- apache常用的配置指令:ServerRoot
- ccna实验配置个人总结
- 深入剖析微软ASP.NET Ajax中的数据绑定构架下篇之二
- 噪声强度(噪声功率) 噪声方差到底有什么关系?
- 物联网管理软件的设计
- Android自定义Application的作用
- 4kyu Sums of Perfect Squares
- 10月25日lol服务器维护,《LOL》lol10月25日停机维护到什么时候 10.25维护结束时间...
- php是什么症状脾虚什么症状怎么治,脾虚的5个症状是什么呢