用SpringAOP方式配置資料庫事務管理

2021-06-27 23:25:49 字數 1455 閱讀 3453

資料庫事務(database transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完整地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使

應用程式

更加可靠。乙個邏輯工作單元要成為事務,必須滿足所謂的acid(原子性、一致性、隔離性和永續性)屬性。

spring事務管理

spring對事務的解決辦法其實分為2種:程式設計式實現事務,aop配置宣告式解決方案。

spring提供了許多內建事務管理器實現,常用的有以下幾種:

spring和hibernate整合時常用的aop事務配置方法如下:

classpath:hibernate/hibernate.cfg.xml

「唯讀事務」解釋

「唯讀事務」並不是乙個強制選項,它只是乙個「暗示」,提示資料庫驅動程式和資料庫系統,這個事務並不包含更改資料的操作,那麼jdbc驅動程式和資料庫就有可能根據這種情況對該事務進行一些特定的優化,比方說不安排相應的資料庫鎖,以減輕事務對資料庫的壓力,畢竟事務也是要消耗資料庫的資源的。 

但是你非要在「唯讀事務」裡面修改資料,也並非不可以,只不過對於資料一致性的保護不像「讀寫事務」那樣保險而已。 

因此,「唯讀事務」僅僅是乙個效能優化的推薦配置而已,並非強制你要這樣做不可

spring的事務傳播行為:

spring

在transactiondefinition介面中規定了7種型別的事務傳播行為,

它們規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播:

事務傳播行為型別

事務傳播行為型別

說明propagation_required

如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。

propagation_supports

支援當前事務,如果當前沒有事務,就以非事務方式執行。

propagation_mandatory

使用當前的事務,如果當前沒有事務,就丟擲異常。

propagation_requires_new

新建事務,如果當前存在事務,把當前事務掛起。

propagation_not_supported

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

propagation_never

以非事務方式執行,如果當前存在事務,則丟擲異常。

propagation_nested

如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類 似的操作。

Spring AOP配置之註解方式

在pom.xml檔案中匯入所需的依賴 在配置檔案中開啟aop註解支援 配置切面類 aspect 配置切入點 pointcut 配置通知方法,並為通知方法配置通知型別 before aspect pointcut before afterreturning afterthrowing after ar...

springAop的配置註解方式實現

前面一篇是xml實現的,現在用註解方式實現一下,測試類還是原來的,xml的配置中多餘的部分這裡就不在貼出來了。xml version 1.0 encoding utf 8 beans xmlns xmlns context xmlns xsi xmlns aop xsi schemalocation...

Spring AOP 通過配置檔案方式

1.寫乙個切面類 securitycontrol,其中有個方法 public class securitycontrol private void checksecurity joinpoint joinpoint object obj joinpoint.getargs for int i 0 i...