3.7 同一个线程拿到的 session 是同一个
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();
- }
【本文是专栏作者张勇波的原创文章,转载请通过获取作者授权】
版权声明:
作者:后浪云
链接:https://www.idc.net/help/378904/
文章版权归作者所有,未经允许请勿转载。
THE END