我们一开始用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和线程绑定的配置相关推荐

  1. hibernate中SessionFactory,Session的理解?

    Session接口         Session接口对于Hibernate   开发人员来说是一个最重要的接口.然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会 ...

  2. Hibernate中发生Session is closed 的另一种可能!

    Hibernate中发生"Session is closed" 的另一种可能! 文章分类:Java编程 关键字: hibernate session is closed Hiber ...

  3. Hibernate中发生Session is closed 的另一种可能

    Hibernate中发生"Session is closed" 的另一种可能:没有commit的Transaction. 关键字:"Session is closed&q ...

  4. 一家反欺诈公司的面试经历——3.hibernate中的session的三种状态

    hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态 (Persistent), 游离状态 1.瞬时状态 (Transient) 由 new 命令开辟内存空间的 Java ...

  5. Hibernate中封装session(静态单例模式)

    先做一个类,把session封装起来,等用的时候可以直接调用. public class HibernateUtil {//线程锁,保证线程安全,在用的时候只有这一个session,别人无法处理pri ...

  6. Hibernate中的session.beginTransaction();报错解决

    昨天是我第一次跟着书用Hibernate来实现对数据库进行查询.在官网上下载Hibernate的开发工具包并且在myeclipse中搭建好了Hibernate开发环境后就开始编写代码,但是当我在测试类 ...

  7. java session.load_java – 了解hibernate中的session.get vs session.load方法

    我无法理解load和get之间的区别.当我给session.load时,下面的代码不起作用.它给出了空指针异常.但是当我使用session.get()时,同样有效. public Employee g ...

  8. hibernate中session和sessionFactory的作用

    转载:https://blog.csdn.net/m0_37154839/article/details/79506466 https://www.cnblogs.com/baizhanshi/p/7 ...

  9. (转)Hibernate中的多表操作

    http://blog.csdn.net/yerenyuan_pku/article/details/70556208 Hibernate中的多表操作 在实际开发中,我们不可能只是简简单单地去操作单表 ...

最新文章

  1. 如何选择一线城市和二线城市?
  2. 系统初始化时kernel_init在内核态创建和运行应用程序以完成系统初始化
  3. Java程序员从笨鸟到菜鸟之(二十九)javascript对象的创建和继承实现
  4. 微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解
  5. laravel mysql驱动_Laravel 如何同时使用不同数据库驱动
  6. 正在读取软件包列表... 有错误!
  7. linux 无线网卡连接网络连接不上去,【已解决】Ubuntu 10.04 无线网卡 无法连接
  8. Angular 9 新功能摘要
  9. 以下文件中的行尾不一致,要将行尾标准化吗?+乱码
  10. 中国MES市场主流厂商及产品分析
  11. 【图像加密】基于多种混沌序列Logistic+Tent+Kent+Hent实现图像加密与解密含Matlab源码
  12. 在SSH会话中如何实现 X11 Forwarding
  13. 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈
  14. Web网站模板-餐厅饭店宣传响应式网站模板(HTML+CSS+JavaScript)
  15. android引导页大小,Android:启动引导页实现
  16. PMP考试的5A好考吗?
  17. Python代码画喜羊羊怎么画_利用Python让你的命令行像蔡徐坤一样会打篮球
  18. 常用短链接生成工具推荐
  19. 无限法则服务器选择吗,PlayStation 4内置存储空间不够?可使用移动固态硬盘外置拓展...
  20. 【基于matlab数字图像处理GUI代码】_数字图像处理考核论文_大作业_项目

热门文章

  1. bootstrap-table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)
  2. 页面体验提升小技巧—渐进式图片
  3. CSS pointer-events属性的使用
  4. 你真的懂js获取可视区宽高吗
  5. 词云第一次实践,参考学校老师讲的一些知识点还有网上大佬的代码实现
  6. 1034. 二哥的金链
  7. 五. 面向对象高级特性4. 接口的概念和使用
  8. 用C#来学习唐诗三百首和全唐诗
  9. qt 试用 (3)配置编译源代码及调试
  10. Gridview应用技巧——如何为行添加事件