openSession()和getCurremtSession()的区别
在比较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()的区别相关推荐
- Hibernate openSession() 和 getCurrentSession的区别 .
getHiberanteTemplate .getCurrentSession和OpenSession 采用getCurrentSession()创建的Session会绑定到当前的线程中去.而采用Op ...
- OpenSession与getCurrentSession的区别
getCurrentSession 使用当前的Session OpenSession 创建一个行的Session 1.getCurrentSession创建的Session会更当前线程绑定,而Ope ...
- Hibernate的openSession和getCurrentSession区别
原文链接:http://blog.csdn.net/xiao__gui/article/details/7695698 很多资料从理论上解释hibernate的openSession和getCurre ...
- Hibernate中两种获取Session的方式
转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...
- 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
一.什么是ThreadLocal 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简 ...
- hibernate mysql annotation_Hibernate基于注解annotation的配置
Annotation在框架中是越来越受欢迎了,因为annotation的配置比起XML的配置来说方便了很多,不需要大量的XML来书写,方便简单了很多,只要几个annotation的配置,就可以完成我们 ...
- SSH之Hibernate总结篇
Hibernate hibernate 简介: hibernate是一个开源ORM(Object/Relationship Mipping)框架,它是对象关联关系映射的持久层框架,它对JDBC做了轻量 ...
- Hibernate事务增删改查(第一部分)
Hibernate的增删改查(事务) 1.Hibernate中的事物 1.1 设置事物隔离级别 Hibernate中书屋的隔离级别都是用字节存储的二进制 十进制 read uncommitted 读未 ...
- Java面试:数据库,Java,框架,前端技术。应有尽有
** Java面试宝典 ** 一. HTML&CSS部分 1.HTML中定义表格的宽度用80px和80%的区别是什么? PX标识像素,%标识整个页面的宽度百分比 2.CSS样式定义优先级顺序是 ...
最新文章
- seo关键词互点软件报价_seo关键词优化软件如何收费
- SqlHelper++
- 【Flutter】ExpansionTile 可折叠列表
- Protobuf序列化的原理-protobuf的基本应用
- linux内存映射函数mmap
- java 安全 认证和授权,Java安全之认证与授权
- memcpy( )函数复制二维数组 memcmp( )函数比较二维数组
- C语言从入门到精通所需的7本书
- 如何打造一款火遍国内外的自走棋手游?我们跟《战歌竞技场》的美术和程序聊了聊
- 自然语言处理之——句法分析
- OpenCV之图像的载入、显示与输出
- 骨传导耳机低频差理所当然?飞利浦A6606表示不服
- 转载:做人开心最重要
- input checkbox 获取选中值和设置选中状态
- Latex学习笔记:三线表与表线控制
- 你刷我,我刷你,霸榜CLUE甜蜜蜜
- 电子邮件成为当下网络攻击的主要传播途径
- Check-N-Run: a Checkpointing System for Training Deep Learning Recommendation Models | NSDI‘ 22
- Yolo实用指南(step by step)之三yolov5训练自己的数据集
- linux中,<rc.d>,<rc.local>等带有rc的文件或目录 含义