2013-04-30 18 views
6

Gerçek uygulamamda, JDBC autoCommit = false setine sahip olmayan bir DBCP bağlantı havuzum var. Varsayılan autoCommit = doğru gibi görünüyor. Bu muhtemelen bir hatadır fakat bu parametrenin değiştirilmesinin etkisini anlamak isterim.Spring @Transactional ve JDBC autoCommit

kullanıyorum: - @Transactional açıklama ile Bahar - JdbcTemplate

kullanarak JDBC okuyucular ve yazarlar, sonunda özel Tasklets ile Bahar Toplu

Spring geçerli bağlantıya autocommit = false set eğer bilmek istiyorum TransactionManager tarafından işlenen bir işlem bağlamında ise. Varsayılan ayar geçersiz mi? Çünkü bana öyle geliyor ki bunu yapmak mantıklı. Sahte AutoCommit = ancak en yaygın uygulama (DataSourceTransactionManager) kümesini nasıl

+0

Evet, öyle. Spring, ek açıklama uygulama sınıfı ile sizin için yönetir. – duffymo

+0

Teşekkürler ama bir yorum yerine cevap vermiş olabilirsiniz :) –

+2

Umrumda değil. Buradaki herkes bir uzman. Bir cevap verdiğimde, insanların bir yorum olması gerektiğini söylüyorum. Yorum yapıyorum ve bana bunun bir cevap olması gerektiğini söylüyorsunuz. Kimin umrunda? Bazen cevap vermek için zamanım var, bazen yapmam. – duffymo

cevap

8

PlatformTransactionManager bir arayüz, bu yüzden battaniye tüm uygulamaları AutoCommit = false set söylemek olmaz. doBegin yönteminden aşağıdaki kod parçacığını bakın:

if (con.getAutoCommit()) { 
      txObject.setMustRestoreAutoCommit(true); 
      if (logger.isDebugEnabled()) { 
       logger.debug("Switching JDBC Connection [" + con + "] to manual commit"); 
      } 
      con.setAutoCommit(false); 
     } 
     txObject.getConnectionHolder().setTransactionActive(true); 

Şimdi belirtildiği gibi, bunu yapmak için çok mantıklı ya da üzerinde bir geri alma etkinleştirmek için bir geri alma segmenti olmazdı.

+0

kanıt için teşekkürler :) –

İlgili konular