Hibernate中把Session和线程绑定的配置
我们一开始用session都用HibernateUtil工具类获得Session对象,因为该工具类可以保证将线程不安全的Session绑定到当前线程内,但每次返回的对象都是一个新的session,我写了一个测试方法如下:
@Testpublic void test() {Session s1 = HibernateUtils.openSession();Session s2 = HibernateUtils.openSession();if(s1 == s2) {System.out.println("true");}else {System.out.println("false");}}
输入结果如下:
在Hibernate3开始,Hibernate增加了SessionFactory.getCurrentSession();方法,该方法可以直接获取当前线程的Session对象,而且每次返回的都是同一个对象,下面是配置步骤,首先,我们在hibernate.cfg.xml写入如下代码:
<!-- 把session和线程绑定,从而实现一个线程只有一个Session --><property name="hibernate.current_session_context_class">thread</property>
这个时候就配置好了,下面我们写一个测试方法来测试一下吧:
@Testpublic void test() {Session s1 = HibernateUtils.getCurrentSession();Session s2 = HibernateUtils.getCurrentSession();if(s1==s2) {System.out.println("true");}}
下面这个代码就是获取当前线程的session,我将它封装到HibernateUtils类里面了
Session s1 = HibernateUtils.getCurrentSession()
具体代码如下:
public static Session getCurrentSession() {//只有配置了把session和线程绑定之后,才能使用此方法,否则返回值为nullreturn factory.getCurrentSession();}
这个时候我们在运行一下:
发现输出结果为true,说明返回的是同一个对象
注:Hibernate的Session会随着getCurrentSession()方法自动打开,并伴随事物的·提交自动关闭,非常方便
Hibernate中把Session和线程绑定的配置相关推荐
- hibernate中SessionFactory,Session的理解?
Session接口 Session接口对于Hibernate 开发人员来说是一个最重要的接口.然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会 ...
- Hibernate中发生Session is closed 的另一种可能!
Hibernate中发生"Session is closed" 的另一种可能! 文章分类:Java编程 关键字: hibernate session is closed Hiber ...
- Hibernate中发生Session is closed 的另一种可能
Hibernate中发生"Session is closed" 的另一种可能:没有commit的Transaction. 关键字:"Session is closed&q ...
- 一家反欺诈公司的面试经历——3.hibernate中的session的三种状态
hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态 (Persistent), 游离状态 1.瞬时状态 (Transient) 由 new 命令开辟内存空间的 Java ...
- Hibernate中封装session(静态单例模式)
先做一个类,把session封装起来,等用的时候可以直接调用. public class HibernateUtil {//线程锁,保证线程安全,在用的时候只有这一个session,别人无法处理pri ...
- Hibernate中的session.beginTransaction();报错解决
昨天是我第一次跟着书用Hibernate来实现对数据库进行查询.在官网上下载Hibernate的开发工具包并且在myeclipse中搭建好了Hibernate开发环境后就开始编写代码,但是当我在测试类 ...
- java session.load_java – 了解hibernate中的session.get vs session.load方法
我无法理解load和get之间的区别.当我给session.load时,下面的代码不起作用.它给出了空指针异常.但是当我使用session.get()时,同样有效. public Employee g ...
- hibernate中session和sessionFactory的作用
转载:https://blog.csdn.net/m0_37154839/article/details/79506466 https://www.cnblogs.com/baizhanshi/p/7 ...
- (转)Hibernate中的多表操作
http://blog.csdn.net/yerenyuan_pku/article/details/70556208 Hibernate中的多表操作 在实际开发中,我们不可能只是简简单单地去操作单表 ...
最新文章
- 如何选择一线城市和二线城市?
- 系统初始化时kernel_init在内核态创建和运行应用程序以完成系统初始化
- Java程序员从笨鸟到菜鸟之(二十九)javascript对象的创建和继承实现
- 微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解
- laravel mysql驱动_Laravel 如何同时使用不同数据库驱动
- 正在读取软件包列表... 有错误!
- linux 无线网卡连接网络连接不上去,【已解决】Ubuntu 10.04 无线网卡 无法连接
- Angular 9 新功能摘要
- 以下文件中的行尾不一致,要将行尾标准化吗?+乱码
- 中国MES市场主流厂商及产品分析
- 【图像加密】基于多种混沌序列Logistic+Tent+Kent+Hent实现图像加密与解密含Matlab源码
- 在SSH会话中如何实现 X11 Forwarding
- 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈
- Web网站模板-餐厅饭店宣传响应式网站模板(HTML+CSS+JavaScript)
- android引导页大小,Android:启动引导页实现
- PMP考试的5A好考吗?
- Python代码画喜羊羊怎么画_利用Python让你的命令行像蔡徐坤一样会打篮球
- 常用短链接生成工具推荐
- 无限法则服务器选择吗,PlayStation 4内置存储空间不够?可使用移动固态硬盘外置拓展...
- 【基于matlab数字图像处理GUI代码】_数字图像处理考核论文_大作业_项目