我们知道在“增删改查”操作里,只有查询是不需要开启事务的,但是使用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()执行查询却要开启事务,请高手帮我解答,谢谢!
------解决方案--------------------