Java & MySQL - 事務



如果您的 JDBC 連線處於自動提交模式(預設情況下),則每個 SQL 語句在完成時都會提交到資料庫。

對於簡單的應用程式,這可能沒問題,但您可能希望關閉自動提交併自行管理事務的原因有三個:

  • 提高效能。

  • 維護業務流程的完整性。

  • 使用分散式事務。

事務使您可以控制是否以及何時將更改應用於資料庫。它將單個 SQL 語句或一組 SQL 語句視為一個邏輯單元,如果任何語句失敗,則整個事務都將失敗。

要啟用手動事務支援而不是 JDBC 驅動程式預設使用的自動提交模式,請使用 Connection 物件的setAutoCommit()方法。如果將布林值 false 傳遞給 setAutoCommit( ),則關閉自動提交。您可以傳遞布林值 true 以再次將其開啟。

例如,如果您有一個名為 conn 的 Connection 物件,請編寫以下程式碼以關閉自動提交:

conn.setAutoCommit(false);

提交 & 回滾

完成更改並想要提交更改後,請在連線物件上呼叫commit()方法,如下所示:

conn.commit( );

否則,要回滾使用名為 conn 的 Connection 進行的資料庫更新,請使用以下程式碼:

conn.rollback( );

使用儲存點

新的 JDBC 3.0 Savepoint 介面為您提供了額外的交易控制。

設定儲存點時,您在事務中定義了一個邏輯回滾點。如果在儲存點之後發生錯誤,您可以使用回滾方法撤消所有更改或僅撤消儲存點之後進行的更改。

Connection 物件有兩個新方法可以幫助您管理儲存點:

  • setSavepoint(String savepointName) - 定義一個新的儲存點。它還會返回一個 Savepoint 物件。

  • releaseSavepoint(Savepoint savepointName) - 刪除儲存點。請注意,它需要一個 Savepoint 物件作為引數。此物件通常是 setSavepoint() 方法生成的儲存點。

有一個rollback (String savepointName)方法,它將工作回滾到指定的儲存點。

廣告

© . All rights reserved.