本人对hibernate只读查询需不需要事务的问题一直没有弄明白,有人说需要事务,有人说不需要事务,还请高人指点!谢谢
我经常看到别人写的代码中包含如下语句:@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true),
我的想法就是如果不需要事务,就没有必要加上这句话了,但是一旦将这句话去掉,则报如下异常:
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
------解决方案--------------------
你的框架里对 hibernate session 都没有处理吧
只有加上事务 spring 会帮你管理hibernate 的session 否则你要自己管理
------解决方案--------------------
对注解不太了解,所以我没用注解的,帮顶、
------解决方案--------------------
只读是不需要事务的,这点是肯定的
什么是事务,二次正常执行的commit or rollback之间的操作称为一个事务。
至于你把注解去掉报错我觉得是你spring和hibernate整合的问题。
------解决方案--------------------
readOnly = true 说明这个方法的事务属性是只读的,跟通常的insert、update、delete的事务是不同的。