openSession
getCurrentSession

Hibernate有两种方式获得session,分别是:
  openSession和getCurrentSession
他们的区别在于
1. 获取的是否是同一个session对象
  openSession每次都会得到一个新的Session对象
  getCurrentSession在同一个线程中,每次都是获取相同的Session对象,但是在不同的线程中获取的是不同的Session对象

      SessionFactory factory=new Configuration().configure().buildSessionFactory();

        Session session = factory.openSession();
Session session1= factory.openSession();
System.out.println(session==session1); 同一线程:主线程(true)
Session session2 = factory.getCurrentSession();
Session session3= factory.getCurrentSession();
System.out.println(session2==session3);

不同线程: (false)

public class Test {
static Session s1;
static Session s2; public static void main(String[] args) throws InterruptedException { final SessionFactory sf = new Configuration().configure().buildSessionFactory(); Thread t1 = new Thread() {
public void run() {
s1 = sf.getCurrentSession();
}
};
t1.start(); Thread t2 = new Thread() {
public void run() {
s2 = sf.getCurrentSession();
}
};
t2.start();
t1.join();
t2.join(); System.out.println(s1 == s2);
}
}


2. 事务提交的必要性
  openSession只有在增加,删除,修改的时候需要事务,查询时不需要的(get方法)
  getCurrentSession是所有操作都必须放在事务中进行,并且提交事务后,session就自动关闭,不能够再进行关闭

提交事务后,session就自动关闭,不能够再进行关闭:

最新文章

  1. 【微信小程序开发】之如何获取免费ssl证书【图文步骤】
  2. 缓存篇(Cache)~大话开篇
  3. TypeError: matchExpr[type].exec is not a function
  4. 使用 WordPress 主题制作的20个精美网页
  5. COM中的线程模式
  6. python入门基础代码
  7. TCP短连接TIME_WAIT问题解决方法大全
  8. C#窗体 WinForm 对话框,流
  9. django orm总结
  10. Run python as a daemon process
  11. Spring Cloud OAuth
  12. BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
  13. 杭州(含嘉兴,绍兴,金华,湖州,义乌)Uber优步司机奖励政策(1月25日~1月31日)
  14. 【模拟】Vijos P1005 超长数字串
  15. The Black Tux | IT桔子
  16. SQL 用中文的拼音和笔画排序
  17. 漫谈并发编程(六):java中一些经常使用的并发构件的介绍
  18. Microsoft Build 2016 Day 2
  19. Swift入门教程:基本语法大全
  20. Faster-R-CNN编译使用及相应问题解决

热门文章

  1. 树莓派开启VNC远程桌面
  2. jenkins -- 邮件的配置
  3. vSphere HA 原理与配置
  4. app1----攻防世界
  5. 看雪hello
  6. CLion的使用
  7. 机器学习(ML)八之正向传播、反向传播和计算图,及数值稳定性和模型初始化
  8. python多进程编程中常常能用到的几种方法
  9. 013-PHP输出表格
  10. numpy.linspace使用详解