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中无所谓。

Spring Transaction,布布扣,bubuko.com

时间: 2024-08-05 19:33:09

Spring Transaction的相关文章

spring Transaction Management --官方

原文链接:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html 12. Transaction Management 12.1 Introduction to Spring Framework transaction management Comprehensive transaction support is among the most compelling rea

Use Spring transaction to simplify Hibernate session management

Spring对Hibernate有很好的支持    DataSource ->SessionFactory-> HibernateTranscationManagerHibernate中通过SessionFactory创建和维护Session.Spring对SessionFactory的配置进行了整合,无需再通过Hibernate.cfg.xml对SessionFactory进行设定.SessionFactory节点的mappingResources属性包含了映射文件的路径,list节点下可配

疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

在MAVEN项目里面,在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L错误 在网上搜的大多说是jar包版本不兼容的问题.但想想,不应该啊,这是他们原有的系统,难道有做过升级吗,最后尝试着把版本升级了下,还真是版本兼容出了问题. 1 Exception in thread "main

Spring Transaction + MyBatis SqlSession事务管理机制研究学习

线上的系统中,使用的是Spring+Mybatis+Mysql搭建的框架,由于客户需要,最近一直在对性能提升部分进行考虑,主要是涉及Mysql的一些重要参数的配置学习,以及Spring事务管理机制的学习,因为通过观察服务器日志,发现在这两部分的时候耗时比较严重,特别是进行mysql事务提交的时候,项目源码中使用了Spring的声明式事务,即通过@Transactional注解来控制事务的开启与提交,这两天看了一些关于Spring Transaction事务的一些文章,也debug了源码,总算有点

Spring Transaction 使用入门

一.开篇陈述 1.1 写文缘由 最近在系统学习spring框架IoC.AOP.Transaction相关的知识点,准备写三篇随笔记录学习过程中的感悟.这是第一篇,记录spring Transaction的使用及部分原理.spring的学习过程应该是从IoC到AOP再到Transaction,这里写随笔的顺序没有按照学习路线. 1.2 预备技能 学习spring事务使用最好具备基础的Java知识,掌握spring IoC和spring AOP,并对各类数据库事务的概念有所了解.当然,这些都不是必须

Spring Transaction属性之Propagation

Spring Transaction中有一个很重要的属性:Propagation.主要用来配置当前需要执行的方法,与当前是否有transaction之间的关系. 我晓得有点儿抽象,这也是为什么我想要写这篇博客的原因.看了后面的例子,大家应该就明白了. 一.Propagation取值: REQUIRED(默认值):在有transaction状态下执行:如当前没有transaction,则创建新的transaction: SUPPORTS:如当前有transaction,则在transaction状

java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer; at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.jav

在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L错误 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Inte

java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required

错误信息: 1 java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required 2 at org.springframework.jdbc.support.lob.LobCreatorUtils.registerTransactionS

Spring Transaction 事务模拟

事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败. 事务有四个特性: Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Durability(持久性) Spring对事务的支持很强大,但是从本质上来说,事务是否生效取决于数据库底层是否支持(MySQL的MyISAM引擎不支持事务), 同时,一个事务的多个操作需要在同一个connection上.下面手写一个Demo分析Spring事务底层实现. 工程结构 connection