transactionAttributes各屬性意義及配置
更新時間:2017年09月21日 08:56:10 作者:李天傲
這篇文章主要介紹了transactionAttributes各屬性意義及配置,具有一定參考價值,需要的朋友可以了解下。
在使用spring提供的JpaTemplate進行查詢時,如果數(shù)據(jù)量超過100 條,查詢效率就會明顯降低。由于開始時使用JPA內部的雙向關聯(lián),造成各實體內部關聯(lián)過多,從而影響所有的操作,因此懷疑是因為JPA的關聯(lián)關系所致。但是去掉關聯(lián)關系后的效果不顯著。
配置問題。
<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="sav*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean>
使用上述配置,在JPA打出的日志中顯示每次查詢時都要進行更新操作,查閱相關spring 的資料后發(fā)現(xiàn)transactionAttributes的各種屬性的意義如下:
事務傳播行為類型 | 說明 |
PROPAGATION_REQUIRED | 如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中。這是最常見的選擇。 |
PROPAGATION_SUPPORTS | 支持當前事務,如果當前沒有事務,就以非事務方式執(zhí)行。 |
PROPAGATION_MANDATORY | 使用當前的事務,如果當前沒有事務,就拋出異常。 |
PROPAGATION_REQUIRES_NEW | 新建事務,如果當前存在事務,把當前事務掛起。 |
PROPAGATION_NOT_SUPPORTED | 以非事務方式執(zhí)行操作,如果當前存在事務,就把當前事務掛起。 |
PROPAGATION_NEVER | 以非事務方式執(zhí)行,如果當前存在事務,則拋出異常。 |
PROPAGATION_NESTED | 如果當前存在事務,則在嵌套事務內執(zhí)行。如果當前沒有事務,則執(zhí)行與PROPAGATION_REQUIRED類似的操作。 |
相關文章
Spring boot2基于Mybatis實現(xiàn)多表關聯(lián)查詢
這篇文章主要介紹了Spring boot2基于Mybatis實現(xiàn)多表關聯(lián)查詢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04