2010-06-10 47 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