JDBC编程专题9之JDBC事务
- ?如果JDBC連接處于自動(dòng)提交模式,默認(rèn)情況下,則每個(gè)SQL語(yǔ)句在完成后都會(huì)提交到數(shù)據(jù)庫(kù)中。
- ?對(duì)于簡(jiǎn)單的應(yīng)用程序可能沒(méi)有什么問(wèn)題,但是有三個(gè)原因需要考慮是否關(guān)閉自動(dòng)提交并管理自己的事務(wù):
- ?提高性能 - ?保持業(yè)務(wù)流程的完整性 - ?使用分布式事務(wù) |
- ?事務(wù)能夠控制何時(shí)更改提交并應(yīng)用于數(shù)據(jù)庫(kù)中。它將單個(gè)SQL語(yǔ)句或者一組SQL語(yǔ)句視為一個(gè)邏輯單元,如果任何語(yǔ)句失敗,整個(gè)事務(wù)將失敗。
- ?要啟動(dòng)手動(dòng)事務(wù)支持,而不是使用JDBC驅(qū)動(dòng)程序默認(rèn)使用的自動(dòng)提交模式,調(diào)用Connection對(duì)象的setAutoCommit()方法。如果將布爾的false傳遞給setAutoCommit(),則關(guān)閉自動(dòng)提交。也可以傳遞一個(gè)布爾值true來(lái)重新打開(kāi)它。
1、提交和回滾
- ?完成更改后,若要提交更改,那么可在連接對(duì)象上調(diào)用commit()方法,如下所示:
conn.commit(?);- ?否則,要使用連接名為conn的數(shù)據(jù)庫(kù)回滾更新,使用以下代碼:
conn.rollback();- ?以下示例說(shuō)明了如何使用提交和回滾對(duì)象:
- ?在這種情況下,上述INSERT語(yǔ)句不會(huì)成功執(zhí)行,因?yàn)樗胁僮鞫急换貪L了。
2、使用保存點(diǎn)
- ?新的JDBC3.0新添加了Savepoint接口提供了額外的事務(wù)控制能力。大多數(shù)現(xiàn)代DBMS支持其環(huán)境中的保存點(diǎn),如Oracle的PL/SQL。
- ?設(shè)置保存點(diǎn)(Savepoint)時(shí),可以在事務(wù)中定義邏輯回滾點(diǎn)。如果通過(guò)保存點(diǎn)(Savepoint)發(fā)生錯(cuò)誤時(shí),則可以使用回滾方法來(lái)撤銷(xiāo)所有更改或者僅保存保存點(diǎn)之后所做的更改。
- ?Connection對(duì)象有兩種新的方法可用來(lái)管理保存點(diǎn):
- ?saveSavepoint(String savepointName):定義新的保存點(diǎn),它還返回了一個(gè)Savepoint對(duì)象。 - ?releaseSavepoint(Savepoint savepointName):刪除保存點(diǎn)。要注意,它需要一個(gè)Savepoint對(duì)象作為參數(shù)。該對(duì)象通常是由setSavepoint()方法生成的保存點(diǎn)。 |
- ?有一個(gè)rollback(String savepointName)方法,它將使用事務(wù)回滾到指定的保存點(diǎn)中。
- ?以下示例說(shuō)明了使用Savepoint對(duì)象:
- ?在這種情況下,上述INSERT語(yǔ)句都不會(huì)成功,因?yàn)樗胁僮鞫急换貪L了。
轉(zhuǎn)載于:https://blog.51cto.com/12402717/1980448
總結(jié)
以上是生活随笔為你收集整理的JDBC编程专题9之JDBC事务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java8学习笔记(七)--Collec
- 下一篇: 新装的主机没有ifconfig,rout