zoukankan      html  css  js  c++  java
  • Spring中@transactional

    步骤1:在 xml 配置文件中添加事务配置信息

    1 <tx:annotation-driven />
    2 <bean id="transactionManager"
    3 class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    4 <property name="dataSource" ref="dataSource" />
    5 </bean>

    步骤2:将@Transactional 注解添加到合适的方法上,并设置合适的属性信息

    name     当在配置文件中有多个 TransactionManager,可以用该属性指定选择哪个事务管理器。
    propagation     事务的传播行为,默认值为 REQUIRED。
    isolation     事务的隔离度,默认值采用 DEFAULT。
    timeout     事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。
    read-only     指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。
    rollback-for     用于指定能够触发事务回滚的异常类型,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。
    no-rollback- for     抛出 no-rollback-for 指定的异常类型,不回滚事务

    事务传播级别:
    @Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
    @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务
    @Transactional(propagation=Propagation.REQUIRES_NEW) :不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
    @Transactional(propagation=Propagation.MANDATORY) :必须在一个已有的事务中执行,否则抛出异常
    @Transactional(propagation=Propagation.NEVER) :必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
    @Transactional(propagation=Propagation.SUPPORTS) :如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.

    事务隔离级别:
    @Transactional(isolation = Isolation.READ_UNCOMMITTED):读取未提交数据(会出现脏读, 不可重复读) 基本不使用
    @Transactional(isolation = Isolation.READ_COMMITTED):读取已提交数据(会出现不可重复读和幻读)
    @Transactional(isolation = Isolation.REPEATABLE_READ):可重复读(会出现幻读)
    @Transactional(isolation = Isolation.SERIALIZABLE):串行化

    脏读 : 一个事务读取到另一事务未提交的更新数据
    不可重复读 : 在同一事务中, 多次读取同一数据返回的结果有所不同, 换句话说, 后续读取可以读到另一事务已提交的更新数据. 相反, "可重复读"在同一事务中多次读取数据时, 能够保证所读数据一样, 也就是后续读取不能读到另一事务已提交的更新数据
    幻读 : 一个事务读到另一个事务已提交的insert数据

    博客园:http://www.cnblogs.com/zhuziyu/
    Copyright ©2018 不是植物
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    python Database Poll for SQL SERVER
    SQLAlchemy表操作和增删改查
    flask动态url规则
    flask配置管理
    一个Flask运行分析
    Function Set in OPEN CASCADE
    Happy New Year 2016
    Apply Newton Method to Find Extrema in OPEN CASCADE
    OPEN CASCADE Multiple Variable Function
    OPEN CASCADE Gauss Least Square
  • 原文地址:https://www.cnblogs.com/zhuziyu/p/8759171.html
Copyright © 2011-2022 走看看