JDBC编程专题9之JDBC事务
- ?如果JDBC連接處于自動提交模式,默認情況下,則每個SQL語句在完成后都會提交到數據庫中。
- ?對于簡單的應用程序可能沒有什么問題,但是有三個原因需要考慮是否關閉自動提交并管理自己的事務:
- ?提高性能 - ?保持業務流程的完整性 - ?使用分布式事務 |
- ?事務能夠控制何時更改提交并應用于數據庫中。它將單個SQL語句或者一組SQL語句視為一個邏輯單元,如果任何語句失敗,整個事務將失敗。
- ?要啟動手動事務支持,而不是使用JDBC驅動程序默認使用的自動提交模式,調用Connection對象的setAutoCommit()方法。如果將布爾的false傳遞給setAutoCommit(),則關閉自動提交。也可以傳遞一個布爾值true來重新打開它。
1、提交和回滾
- ?完成更改后,若要提交更改,那么可在連接對象上調用commit()方法,如下所示:
conn.commit(?);- ?否則,要使用連接名為conn的數據庫回滾更新,使用以下代碼:
conn.rollback();- ?以下示例說明了如何使用提交和回滾對象:
- ?在這種情況下,上述INSERT語句不會成功執行,因為所有操作都被回滾了。
2、使用保存點
- ?新的JDBC3.0新添加了Savepoint接口提供了額外的事務控制能力。大多數現代DBMS支持其環境中的保存點,如Oracle的PL/SQL。
- ?設置保存點(Savepoint)時,可以在事務中定義邏輯回滾點。如果通過保存點(Savepoint)發生錯誤時,則可以使用回滾方法來撤銷所有更改或者僅保存保存點之后所做的更改。
- ?Connection對象有兩種新的方法可用來管理保存點:
- ?saveSavepoint(String savepointName):定義新的保存點,它還返回了一個Savepoint對象。 - ?releaseSavepoint(Savepoint savepointName):刪除保存點。要注意,它需要一個Savepoint對象作為參數。該對象通常是由setSavepoint()方法生成的保存點。 |
- ?有一個rollback(String savepointName)方法,它將使用事務回滾到指定的保存點中。
- ?以下示例說明了使用Savepoint對象:
- ?在這種情況下,上述INSERT語句都不會成功,因為所有操作都被回滾了。
轉載于:https://blog.51cto.com/12402717/1980448
總結
以上是生活随笔為你收集整理的JDBC编程专题9之JDBC事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java8学习笔记(七)--Collec
- 下一篇: 安全公司正在借 AI 之力,预测、防御并