首页 > 代码库 > Spring Transaction
Spring Transaction
spring 推荐使用
public void save(Good good) { this.sessionFactory.getCurrentSession().save(good); }
以上编写dao代码,推荐使用hibernateTemplate,避免框架的入侵。这种方式如果不配置事务管理
<!--<aop:config>--> <!--<aop:pointcut id="goodServiceMethods" expression="execution(* cn.bb.service.GoodService.*(..))"/>--> <!--<aop:advisor advice-ref="txAdvice" pointcut-ref="goodServiceMethods"/>--> <!--</aop:config>--> <!--<tx:advice id="txAdvice" transaction-manager="transactionManager">--> <!--<tx:attributes>--> <!--<tx:method name="increasePrice*" propagation="REQUIRED"/>--> <!--<tx:method name="save*" propagation="REQUIRED"/>--> <!--<tx:method name="*" propagation="SUPPORTS" read-only="true"/>--> <!--</tx:attributes>--> <!--</tx:advice>-->
就会抛出异常
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
如果不注释上面的代码则程序能正常运行。
public void saveGoodBatch(List<Good> goodList) throws Exception{ for(Good good : goodList) { saveGood(good); // goodDao.save(good); //都行 } // throw new Exception("sss"); //不会回滚 throw new RuntimeException("aa"); //会回滚 }
在service已经配置了事务的方法中 使用throw new Exception() 不会导致事务回滚;使用throw new RuntimeException 就会导致事务回滚,至于方法中是直接调用dao的还是service中无所谓。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。