2011-10-23 40 views
2

爲了在一個事務中分組幾個DML語句,我必須調用connection.setAutoCommit(false)嗎?我有點困惑,因爲jdbc doc說在自動提交模式下創建了一個新的連接。同時,Oracle沒有自動提交事務,如果DML語句不存在,則DML語句將開始一個新事務。所以,在我的理解中,connection.setAutoCommit(false)是多餘的(假設我不考慮切換到不同的RDMS)。從Java應用程序到Oracle的jdbc連接的自動提交模式

任何人都可以澄清這一點嗎?

謝謝。

回答

3

將autocommit設置爲true意味着實際上每個發送到數據庫的語句都會被封裝在開始/提交中。事務將會隱式啓動,但它也會隱含地提交。下一個陳述也是如此。

如果您希望幾個語句成爲單個事務的一部分,您需要將autocommit設置爲false,執行各種語句,最後明確地調用commit。

+0

感謝您讓我走上正軌;它看起來像我過分簡化了一個非常簡單的概念:) – a1ex07

+1

實際上,您可以通過在發送最後一條語句之前將autocommit設置爲true來避免提交往返。 – steve

相關問題