getCurrentSession 获取当前线程的 session
如果没有就新建
如果有就使用已有的
跟 openSession 获取的 session 不一样之处:
1. 不管增删改查,都要加事务控制
2. 配置文件中要加入 current_session_context_class=thread
3. 它会在事务结束时(commit 或 rollback)自动关掉 session
@Test
public void test14() {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
/**
* getCurrentSession获取当前线程的session
* 如果没有就新建
* 如果有就使用已有的
* 跟openSession获取的session不一样之处:
* 1. 不管增删改查,都要加事务控制
* 2. 配置文件中要加入current_session_context_class取值thread, jta
* 3. 它会在事务结束时(commit或rollback)自动关掉session
*/
Session session = sf.getCurrentSession();
session.beginTransaction();
Order o = (Order) session.get(Order.class, 1);
System.out.println(o);
session.getTransaction().commit();
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
【本文是51CTO专栏作者张勇波的原创文章,转载请通过51CTO获取作者授权】