zoukankan      html  css  js  c++  java
  • spring关于“transactionAttributes”的相关配置

    spring关于“transactionAttributes”的相关配置

    <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
    lazy-init="true" abstract="true"> 
    <property name="transactionManager"> 
    <ref bean="transactionManager" /> 
    </property> 
    <property name="transactionAttributes"> 
    <props> 
    <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop> 
    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop> 
    <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> 
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> 
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> 
    </props> 
    </property> 
    </bean>  


    PROPAGATION_REQUIRED--支持当前事务。假设当前没有事务,就新建一个事务。这是最常见的选择。 
    PROPAGATION_SUPPORTS--支持当前事务。假设当前没有事务,就以非事务方式运行。 
    PROPAGATION_MANDATORY--支持当前事务,假设当前没有事务。就抛出异常。 
    PROPAGATION_REQUIRES_NEW--新建事务。假设当前存在事务。把当前事务挂起。

     
    PROPAGATION_NOT_SUPPORTED--以非事务方式运行操作,假设当前存在事务。就把当前事务挂起。 
    PROPAGATION_NEVER--以非事务方式运行,假设当前存在事务,则抛出异常。 
    PROPAGATION_NESTED--假设当前存在事务。则在嵌套事务内运行。假设当前没有事务。则进行与PROPAGATION_REQUIRED类似的操作。提高SQL语句查询速度的方法
    当前全部的事务都使用“PROPAGATION_REQUIRED”属性值。而且控制事务的操作权限为仅仅读,以保证查询时不会更新数据。
    依据上述 定义 “PROPAGATION_REQUIRED”属性会造成为全部的操作都创建事务。从而会出现JPA的日志中查询时也会进行更新操作的现象,也就造成了效 率的低下。
    将全部查询的操作改成事务类型为“PROPAGATION_NEVER”(不使用事务),则查询效率马上提升,
    可是此时操心一个问题:比方在一 个saveXXX()的方法中。假设方法内部使用更新、查询、再更新的操作流程,会不会造成调用查询时。因为上述配置造成的抛出异常。 


    另外 
    -Exception表示有Exception抛出时,事务回滚. -代表回滚      +就代表提交 
    readonly 就是read only, 设置操作权限为仅仅读,一般用于查询的方法,优化作用.

  • 相关阅读:
    python 函数的进阶
    python 函数的基础
    python3.6 中特殊格式化 和 字典中的pop
    python 文件操作
    python 基础数据类型补充,set集合,深浅拷贝
    python is 和 == 的区别,编码问题
    python字典
    python中堆和栈_Python小知识00002
    pip的更新_Python小知识00001
    Python字符串的编码
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5356290.html
Copyright © 2011-2022 走看看