spring中关于“transactionAttributes”的相关设置
当前位置:以往代写 > JAVA 教程 >spring中关于“transactionAttributes”的相关设置
2019-06-14

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, 配置操纵权限为只读,一般用于查询的要领,优化浸染.

From:csdn博客 冯立彬

    关键字:

在线提交作业