3.7 同一個線程拿到的 session 是同一個
作者:張勇波
博主發(fā)表的文章,有的是自己原創(chuàng),有的是這些年本人從網(wǎng)上積累的,方便大家學(xué)習(xí)。
getCurrentSession 獲取當(dāng)前線程的 session
如果沒有就新建
如果有就使用已有的
跟 openSession 獲取的 session 不一樣之處:
1. 不管增刪改查,都要加事務(wù)控制
2. 配置文件中要加入 current_session_context_class=thread
3. 它會在事務(wù)結(jié)束時(commit 或 rollback)自動關(guān)掉 session
- @Test
- public void test14() {
- SessionFactory sf = new Configuration().configure().buildSessionFactory();
- /**
- * getCurrentSession獲取當(dāng)前線程的session
- * 如果沒有就新建
- * 如果有就使用已有的
- * 跟openSession獲取的session不一樣之處:
- * 1. 不管增刪改查,都要加事務(wù)控制
- * 2. 配置文件中要加入current_session_context_class取值thread, jta
- * 3. 它會在事務(wù)結(jié)束時(commit或rollback)自動關(guān)掉session
- */
- Session session = sf.getCurrentSession();
- session.beginTransaction();
- Order o = (Order) session.get(Order.class, 1);
- System.out.println(o);
- session.getTransaction().commit();
- }
【本文是51CTO專欄作者張勇波的原創(chuàng)文章,轉(zhuǎn)載請通過51CTO獲取作者授權(quán)】
責(zé)任編輯:武曉燕
來源:
上下求索的Z先生博客