我们正在研究使用JdbcTemplate访问数据库 - 但我们有许多不同的数据库连接,每个类都可以使用,因此注入jdbcTemplate不是一个选项atm。所以如果我们做了
jdbcTemplate = new JdbcTemplate(dataSource);
交易政策是什么?数据库中的自动提交已关闭。
答案 0 :(得分:2)
您可以配置每个javax.sql.DataSource
对象以启用自动提交(如果这样做),或者禁用自动提交并以编程方式编写事务逻辑。
java.sql.Connection
和javax.sql.DataSource
类都有启用/禁用自动提交的方法。
关于依赖注入和Spring,您仍然可以将数据源对象注入到存储库中。如果您还让每个存储库扩展org.springframework.jdbc.core.support.JdbcDaoSupport
类,那么您可以使用派生的getJdbcTemplate()
方法为您提供JdbcTemplate对象。
您也可以让Spring为您处理事务处理。如果没有XA事务管理器,则每个数据源都需要一个事务管理器。对于许多事务管理器,使用@Transactional
注释的声明式事务支持是不可能的。但是,您可以将事务管理器注入服务类。参考文档here中描述了这一点。