一、jupyter notebook介紹 1、簡介 Jupyter Notebook是基於網頁的用於交互計算的應用程式。其可被應用於全過程計算:開發、文檔編寫、運行代碼和展示結果。——Jupyter Notebook官方介紹 簡而言之,Jupyter Notebook是以網頁的形式打開,可以在網頁頁 ...
以下是每種事務類型的作用、代碼示例和對代碼的解釋:
-
PROPAGATION_REQUIRED
(預設):- 作用:如果當前存在事務,則方法將在該事務中運行;如果不存在事務,則創建一個新的事務。適用於大多數業務場景,確保方法在事務中執行,如果沒有事務,則創建一個新的事務。
- 代碼示例:
@Transactional(propagation = Propagation.REQUIRED) public void method1() { // 事務邏輯 } @Transactional(propagation = Propagation.REQUIRED) public void method2() { // 事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_REQUIRED
事務傳播類型。如果當前存在事務,則這兩個方法將在同一個事務中運行;如果當前不存在事務,則會創建一個新的事務。如果任一方法發生異常,則整個事務將回滾。
-
PROPAGATION_REQUIRES_NEW
:- 作用:創建一個新的事務,並掛起當前事務(如果存在)。新事務將獨立於當前事務運行。如果新事務失敗,則回滾新事務,但不會影響當前事務。
- 代碼示例:
@Transactional(propagation = Propagation.REQUIRES_NEW) public void method1() { // 事務邏輯 } @Transactional(propagation = Propagation.REQUIRES_NEW) public void method2() { // 事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_REQUIRES_NEW
事務傳播類型。每個方法都會創建一個新的事務,獨立於當前事務的運行。如果任一方法發生異常,則該方法所在的事務將回滾,但不會影響其他事務。
-
PROPAGATION_SUPPORTS
:- 作用:如果當前存在事務,則方法將在該事務中運行;如果不存在事務,則以非事務的方式運行方法。適用於讀取資料庫的操作,不需要事務支持。
- 代碼示例:
@Transactional(propagation = Propagation.SUPPORTS) public void method1() { // 事務邏輯 } @Transactional(propagation = Propagation.SUPPORTS) public void method2() { // 事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_SUPPORTS
事務傳播類型。如果當前存在事務,則這兩個方法將在同一個事務中運行;如果當前不存在事務,則以非事務的方式運行。適用於不需要強制事務支持的操作。
-
PROPAGATION_NOT_SUPPORTED
:- 作用:以非事務的方式運行方法。如果當前存在事務,則將其掛起。適用於不需要事務支持的操作,如查詢。
- 代碼示例:
@Transactional(propagation = Propagation.NOT_SUPPORTED) public void method1() { // 非事務邏輯 } @Transactional(propagation = Propagation.NOT_SUPPORTED) public void method2() { // 非事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_NOT_SUPPORTED
事務傳播類型。這兩個方法將以非事務的方式運行,即使當前存在事務也會被掛起。適用於不需要事務支持的操作。
-
PROPAGATION_MANDATORY
:- 作用:如果當前存在事務,則方法將在該事務中運行;如果不存在事務,則拋出異常。適用於必須在事務中運行的操作。
- 代碼示例:
@Transactional(propagation = Propagation.MANDATORY) public void method1() { // 事務邏輯 } @Transactional(propagation = Propagation.MANDATORY) public void method2() { // 事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_MANDATORY
事務傳播類型。如果當前存在事務,則這兩個方法將在同一個事務中運行;如果當前不存在事務,則會拋出異常。適用於必須在事務中運行的操作。
-
PROPAGATION_NEVER
:- 作用:以非事務的方式運行方法。如果當前存在事務,則拋出異常。適用於不允許在事務中運行的操作。
- 代碼示例:
@Transactional(propagation = Propagation.NEVER) public void method1() { // 非事務邏輯 } @Transactional(propagation = Propagation.NEVER) public void method2() { // 非事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_NEVER
事務傳播類型。這兩個方法將以非事務的方式運行,即使當前存在事務也會拋出異常。適用於不允許在事務中運行的操作。
-
PROPAGATION_NESTED
:- 作用:如果當前存在事務,則在嵌套事務中運行;如果不存在事務,則創建一個新的事務。嵌套事務是獨立於當前事務但又依賴於當前事務的事務。如果嵌套事務失敗,則回滾嵌套事務和當前事務。
- 代碼示例:
@Transactional(propagation = Propagation.NESTED) public void method1() { // 事務邏輯 } @Transactional(propagation = Propagation.NESTED) public void method2() { // 事務邏輯 }
- 解釋:
method1
和method2
都使用了PROPAGATION_NESTED
事務傳播類型。如果當前存在事務,則這兩個方法將在嵌套事務中運行。嵌套事務是獨立於當前事務但又依賴於當前事務的事務。如果任一方法發生異常,則嵌套事務和當前事務都將回滾。