2011-01-27 42 views
1

使用連接池時, 會設置連接的autocommit = false 隻影響此連接嗎?jdbc是否會自動提交影響所有連接?

如果我關閉此連接而未設置autocommit = true 並獲得新連接,則將此連接的策略設置爲autocommit = true?

回答

1

答案就是:「取決於所使用的連接池」。

但是,如果我是一個連接池,我將根據初始配置恢復自動提交狀態。我認爲其他連接池也會這樣做。

0

測試場景:

  1. 一套自動提交=假
  2. 使用交易
  3. 關閉連接不設置回自動提交=真正

結果:當特定連接被重用,它仍然有autocommit = false(其他新連接有defau lt autocommit = true)。所以,一旦我在數據庫端殺掉了這個連接並再次調用我的代碼,那麼只有這個池給我一個默認的autocommit = true的新連接。

結論:它隻影響這個連接,但確保在關閉之前將其設置回autocommit = true! (這是根據實際測試,而不是假設)

注:本beahvior過這裏要注意:http://www.coderanch.com/t/583969/JDBC/databases/Tomcat-connection-pool-auto-commit

我使用JDBC與Tomcat7,爪哇1.7,MySQL5.6,連接器/ J 5.1。

相關問題