• spring-transaction事务


    其实一个事务对应的就是一个方法

    基于注解的方式实现事务
    1.
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
    </bean>
    2.
    <tx:annotation-driven transaction-manager="transactionManager"/>
    3.
    @Transactional
    public void purchase(int accountId,int bookId)

    @Transactional(isolation=Isolation.READ_COMMITTED,
    noRollbackFor=NumberException.class,
    propagation=Propagation.REQUIRES_NEW,
    readOnly=false,
    timeout=3)
    isolation=Isolation.READ_COMMITTED:事务的隔离级别
    noRollbackFor=NumberException.class:遇到哪些异常不回滚
    propagation=Propagation.REQUIRES_NEW:事务的传播行为,当一个事务方法调用另一个事务方法时,新开一事务
    Propagation.REQUIRED:当一个事务方法调用另一个事务方法时,合为一个事务

    注意:事务的传播行为是在本事务被另一个事务调用时才起作用的


    readOnly=false:事务对数据库只读
    timeout=3: 当此事务执行的时间超过3秒时就回滚

    基于配置文件的方式实现事务
    <!-- 基于配置文件的方式配置 -->
    <!-- 1.配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 2.配置事务属性。需要一个事务管理器。支持对方法名加通配符 -->
    <tx:advice transaction-manager="transactionManager" id="advice">
    <tx:attributes>
    <tx:method name="purchase" read-only="false" propagation="REQUIRED"/>
    <tx:method name="find*" read-only="true"/>
    <tx:method name="get*" read-only="true"/>
    <tx:method name="*"/>
    </tx:attributes>
    </tx:advice>
    <!--
    3.配置事务切入点,并把它和事务属性关联起来
    expression="execution(* transaction_xml.BookStoreService.*(..))" 通配事务的那个方法

    -->
    <aop:config>
    <aop:pointcut expression="execution(* transaction_xml.BookStoreService.*(..))" id="pointcut"/>
    <aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>
    </aop:config>

  • 相关阅读:
    Qt C++中的关键字explicit——防止隐式转换(也就是Java里的装箱),必须写清楚
    有栖川有栖《马来铁道之谜》读后感
    Qt多国语言QT_TR_NOOP和QT_TRANSLATE_NOOP
    Qt调用VC++生成的动态链接库
    QTabWidget添加自定义样式
    Qt跨线程信号和槽的连接(默认方式是直连和队列的折中)
    OO五大原则
    《Head First Python》学习笔记03 异常处理
    使用Qt实现MDI风格的主窗体
    Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)
  • 原文地址:https://www.cnblogs.com/feifeiyun/p/6522797.html
Copyright © 2020-2023  润新知