博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openSession 与 getCurrentSession的区别
阅读量:5949 次
发布时间:2019-06-19

本文共 1274 字,大约阅读时间需要 4 分钟。

1、openSession 每一次获得的是一个全新的session对象,而getCurrentSession获得的是与当前线程绑定的session对象

package cn.kiwifly.view;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.classic.Session;import cn.kiwifly.util.MySessionFactory;public class View {	public static void main(String[] args) {		Configuration configuration = new Configuration().configure();		SessionFactory sf = configuration.buildSessionFactory();				Session sessionOpen1 = sf.openSession();		Session sessionOpen2 = sf.openSession();				Session sessionThread1 = sf.getCurrentSession();		Session sessionThread2 = sf.getCurrentSession();				System.out.println(sessionOpen1.hashCode() + "<-------->" + sessionOpen2.hashCode());		System.out.println(sessionThread1.hashCode() + "<-------->" + sessionThread2.hashCode());			}}

上面代码输出结果:

546579839<-------->1579795854

141106670<-------->141106670

2、openSession不需要配置,而getCurrentSession需要配置

1中代码如果直接运行会报错,要在hibernate.cfg.xml中加入如下代码才行

thread

这里我们是让session与当前线程绑定,这里的线程范围应该是一次浏览器的会话过程,也就是说打开网站和关闭浏览器这个时间段。

3、openSession需要手动关闭,而getCurrentSession系统自动关闭

openSession出来的session要通过:

session.close();
而getSessionCurrent出来的session系统自动关闭,如果自己关闭会报错

4、Session是线程不同步的,要保证线程安全就要使用getCurrentSession

转载于:https://www.cnblogs.com/kiwifly/p/4435869.html

你可能感兴趣的文章
我的友情链接
查看>>
统计一个网段以及相应区段存活和宕机的ip
查看>>
dns
查看>>
k8s-05-一键部署k8smaster节点
查看>>
matlab-线性代数 判断 正交矩阵
查看>>
Extjs 导出excel
查看>>
linux apahce tomcat 实现负载均衡和Session 共享
查看>>
Java IO读写大文件的几种方式及测试
查看>>
python 使用 pyenv 多环境切换
查看>>
pemu简介
查看>>
java内存泄露和内存溢出
查看>>
ajax xml
查看>>
网络编程技术与商业运营模式 谁死鹿手
查看>>
kubernetes常用命令
查看>>
Iperf 源代码分析(二)
查看>>
tomcat服务器的初始配置问题
查看>>
我的友情链接
查看>>
编译安装MongoDB
查看>>
js批量删除代码
查看>>
mac电脑清理docker垃圾文件脚本
查看>>