2010-06-10 45 views
3

我們正在研究使用JdbcTemplate訪問數據庫 - 但我們有許多不同的DB連接,每個類都可以使用,因此注入jdbcTemplate不是選項atm。所以如果我們做一個使用JdcbTemplate獨立版

jdbcTemplate = new JdbcTemplate(dataSource); 

交易政策是什麼?數據庫中的自動提交已關閉。

回答

2

您可以配置每個javax.sql.DataSource對象以啓用自動提交(如果執行該作業),或者禁用自動提交併以編程方式寫入事務邏輯。

java.sql.Connectionjavax.sql.DataSource類都有用於啓用/禁用自動提交的方法。

關於依賴注入和Spring,仍然可以將數據源對象注入到存儲庫中。如果您還讓每個存儲庫擴展org.springframework.jdbc.core.support.JdbcDaoSupport類,那麼您可以使用派生的getJdbcTemplate()方法爲您提供JdbcTemplate對象。

你也可以讓Spring爲你處理事務處理。沒有XA事務管理器,每個數據源都需要一個事務管理器。對於許多事務管理器,使用@Transactional註釋進行聲明式事務處理是不可能的。但是,您可以將事務管理器注入您的服務類。這在參考文檔here中進行了描述。

+0

所以我猜,如果沒有其他指定,JdbcTemplate會在每次更新後簡單地提交? – Flyhard 2010-06-10 14:41:55

+0

這是我使用的每個'DataSource'的默認行爲。所以它應該,但是如果'JdbcTemplate.update(..)'沒有提交,請檢查你的'DataSource'配置。 – Espen 2010-06-10 21:03:58

+0

javax.sql.DataSource沒有提及自動提交。 – 2012-07-19 18:47:26