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();
- }
【本文是51CTO专栏作者张勇波的原创文章,转载请通过51CTO获取作者授权】