本人对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

解决方案 »

  1.   

    你的框架里对 hibernate session 都没有处理吧只有加上事务 spring 会帮你管理hibernate 的session 否则你要自己管理
      

  2.   

    只读是不需要事务的,这点是肯定的
    什么是事务,二次正常执行的commit or rollback之间的操作称为一个事务。
    至于你把注解去掉报错我觉得是你spring和hibernate整合的问题。
      

  3.   

     readOnly = true 说明这个方法的事务属性是只读的,跟通常的insert、update、delete的事务是不同的。