在比较openSession和getCurrentSession这两个方法之前,我们先认识一下这两个方法。

在进行配置信息管理时,我们一般进行一下简单步骤:

Configuration cfg = new Configuration(); // 获得配置信息对象
SessionFactory sf = cfg.configure().buildSessionFactory(); //解析并建立Session工厂

1. Session session = sf.getCurrentSession(); // 获得Session

2. Session session = sf.openSession(); // 打开Session

对于上述的两个方法,有以下区别:

1. openSession 从字面上可以看得出来,是打开一个新的session对象,而且每次使用都是打开一个新的session,假如连续使用多次,则获得的session不是同一个对象,并且使用完需要调用close方法关闭session。

2. getCurrentSession ,从字面上可以看得出来,是获取当前上下文一个session对象,当第一次使用此方法时,会自动产生一个session对象,并且连续使用多次时,得到的session都是同一个对象,这就是与openSession的区别之一,简单而言,getCurrentSession 就是:如果有已经使用的,用旧的,如果没有,建新的。

注意:在实际开发中,往往使用getCurrentSession多,因为一般是处理同一个事务(即是使用一个数据库的情况),所以在一般情况下比较少使用openSession或者说openSession是比较老旧的一套接口了;

对于getCurrentSession 来说,有以下一些特点:

1.用途,界定事务边界

2.事务提交会自动close,不需要像openSession一样自己调用close方法关闭session

3.上下文配置(即在hibernate.cfg.xml)中,需要配置:

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

(需要注意,这里的current_session_context_class属性有几个属性值:jta 、 thread 常用 , custom、managed 少用 )

a).thread使用connection 单数据库连接管理事务

b).jta (Java transaction api) Java 分布式事务管理 (多数据库访问),jta 由中间件提供(JBoss WebLogic 等, 但是tomcat 不支持)

转载于:https://www.cnblogs.com/08love125/articles/6836070.html

openSession()和getCurremtSession()的区别相关推荐

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

    getHiberanteTemplate .getCurrentSession和OpenSession 采用getCurrentSession()创建的Session会绑定到当前的线程中去.而采用Op ...

  2. OpenSession与getCurrentSession的区别

    getCurrentSession 使用当前的Session OpenSession  创建一个行的Session 1.getCurrentSession创建的Session会更当前线程绑定,而Ope ...

  3. Hibernate的openSession和getCurrentSession区别

    原文链接:http://blog.csdn.net/xiao__gui/article/details/7695698 很多资料从理论上解释hibernate的openSession和getCurre ...

  4. Hibernate中两种获取Session的方式

    转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...

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

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

  6. hibernate mysql annotation_Hibernate基于注解annotation的配置

    Annotation在框架中是越来越受欢迎了,因为annotation的配置比起XML的配置来说方便了很多,不需要大量的XML来书写,方便简单了很多,只要几个annotation的配置,就可以完成我们 ...

  7. SSH之Hibernate总结篇

    Hibernate hibernate 简介: hibernate是一个开源ORM(Object/Relationship Mipping)框架,它是对象关联关系映射的持久层框架,它对JDBC做了轻量 ...

  8. Hibernate事务增删改查(第一部分)

    Hibernate的增删改查(事务) 1.Hibernate中的事物 1.1 设置事物隔离级别 Hibernate中书屋的隔离级别都是用字节存储的二进制 十进制 read uncommitted 读未 ...

  9. Java面试:数据库,Java,框架,前端技术。应有尽有

    ** Java面试宝典 ** 一. HTML&CSS部分 1.HTML中定义表格的宽度用80px和80%的区别是什么? PX标识像素,%标识整个页面的宽度百分比 2.CSS样式定义优先级顺序是 ...

最新文章

  1. seo关键词互点软件报价_seo关键词优化软件如何收费
  2. SqlHelper++
  3. 【Flutter】ExpansionTile 可折叠列表
  4. Protobuf序列化的原理-protobuf的基本应用
  5. linux内存映射函数mmap
  6. java 安全 认证和授权,Java安全之认证与授权
  7. memcpy( )函数复制二维数组 memcmp( )函数比较二维数组
  8. C语言从入门到精通所需的7本书
  9. 如何打造一款火遍国内外的自走棋手游?我们跟《战歌竞技场》的美术和程序聊了聊
  10. 自然语言处理之——句法分析
  11. OpenCV之图像的载入、显示与输出
  12. 骨传导耳机低频差理所当然?飞利浦A6606表示不服
  13. 转载:做人开心最重要
  14. input checkbox 获取选中值和设置选中状态
  15. Latex学习笔记:三线表与表线控制
  16. 你刷我,我刷你,霸榜CLUE甜蜜蜜
  17. 电子邮件成为当下网络攻击的主要传播途径
  18. Check-N-Run: a Checkpointing System for Training Deep Learning Recommendation Models | NSDI‘ 22
  19. Yolo实用指南(step by step)之三yolov5训练自己的数据集
  20. linux中,<rc.d>,<rc.local>等带有rc的文件或目录 含义

热门文章

  1. 2011,我的IT我的梦
  2. Android进阶知识:事件分发与滑动冲突(一)
  3. 安装和使用Smokeping(二)
  4. TCP三次握手Render Tree页面渲染=从输入URL到页面显示的过程?
  5. 获取各种常见形状的位图
  6. Kali渗透测试——快速查找Metasploit的模块
  7. UIBezierPath 的使用介绍
  8. python脚本 通过rsa private key 生成 publickey
  9. VS2010 COM组件问题
  10. linux文件I/O操作