Hibernate getCurrentSession()和openSession()的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate getCurrentSession()和openSession()的区别相关的知识,希望对你有一定的参考价值。
- 通过getCurrentSession()创建的Session会绑定到当前线程上;openSession()不会。
- 通过getCurrentSession()获取Session,首先是从当前上下文中寻找旧的Session,如果没有,则创建新的Session;而openSession()是每次都创建新的Session。
- getCurrentSession()创建的Session在事物提交时自动关闭;openSession()创建的Session需要手动关闭。
1 @Test 2 public void testTeacherSave() { 3 4 Teacher t = new Teacher(); 5 6 t.setName("t1"); 7 t.setTitle("middle"); 8 t.setBirthDate(new Date()); 9 10 Session session = sessionFactory.openSession(); 11 //Session session = sessionFactory.getCurrentSession(); 12 13 session.beginTransaction(); 14 session.save(t); 15 16 Session session2 = sessionFactory.getCurrentSession(); 17 18 System.out.println(session == session2); 19 20 session.getTransaction().commit(); 21 22 Session session3 = sessionFactory.getCurrentSession(); 23 24 System.out.println(session == session3); 25 26 }
输出:Hibernate:
insert
into
Teacher
(birthDate, gender, good, name, title)
values
(?, ?, ?, ?, ?)
false
false1 @Test 2 public void testTeacherSave() { 3 4 Teacher t = new Teacher(); 5 6 t.setName("t1"); 7 t.setTitle("middle"); 8 t.setBirthDate(new Date()); 9 10 //Session session = sessionFactory.openSession(); 11 Session session = sessionFactory.getCurrentSession(); 12 13 session.beginTransaction(); 14 session.save(t); 15 16 Session session2 = sessionFactory.getCurrentSession(); 17 18 System.out.println(session == session2); 19 20 session.getTransaction().commit(); 21 22 Session session3 = sessionFactory.getCurrentSession(); 23 24 System.out.println(session == session3); 25 26 }
输出:Hibernate:
insert
into
Teacher
(birthDate, gender, good, name, title)
values
(?, ?, ?, ?, ?)
true
false
以上是关于Hibernate getCurrentSession()和openSession()的区别的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate中getCurrentSession()与openSession()的区别及应用
Hibernate框架使用 getCurrentSession()获取Session对象相关问题
hibernate如果要使用getCurrentSession
hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别