当前位置: 代码迷 >> J2EE >> 使用hibernate的getCurrentSession()执行查询语句时,为什么一定要开启事务? 多谢
  详细解决方案

使用hibernate的getCurrentSession()执行查询语句时,为什么一定要开启事务? 多谢

热度:16   发布时间:2016-04-22 00:33:59.0
使用hibernate的getCurrentSession()执行查询语句时,为什么一定要开启事务? 谢谢!
我们知道在“增删改查”操作里,只有查询是不需要开启事务的,但是使用hibernate的getCurrentSession()执行查询语句时却一定要开启事务,否则就报错,请问这是为什么呢?

Java code
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();    session.beginTransaction();    Teacher t = (Teacher)session.get(Teacher.class, 1);    session.getTransaction().commit();


我测试发现,如果使用OpenSession()是不需要开启事务的
Java code
    Session session = HibernateUtil.getSessionFactory().openSession();    Teacher t2 = (Teacher)session.get(Teacher.class, 1);    session.close();


使用OpenSession()执行查询不需要开启事务,这点跟事务的本质符合。
但使用getCurrentSession()执行查询却要开启事务,请高手帮我解答,谢谢!


------解决方案--------------------
探讨
主要是线程安全
  相关解决方案