独立使用 JdcbTemplate
我们正在考虑使用 JdbcTemplate 来访问数据库 - 但我们有许多不同的数据库连接,每个类都可以使用,因此注入 jdbcTemplate 不是一个选项。那么如果我们做一个
jdbcTemplate = new JdbcTemplate(dataSource);
交易政策会是什么?数据库中的自动提交已关闭。
We are looking into using the JdbcTemplate for accessing the DB - but we have many different DB-connections, that each class could use, so injecting the jdbcTemplate is not an option atm. So if we do a
jdbcTemplate = new JdbcTemplate(dataSource);
what will the transaction policy be? Auto-commit is off in the DB.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以配置每个 javax.sql.DataSource 对象以启用自动提交(如果该对象可以完成任务),或者禁用自动提交并以编程方式编写事务逻辑。
java.sql.Connection
和javax.sql.DataSource
类都具有启用/禁用自动提交的方法。关于依赖注入和 Spring,您仍然可以将数据源对象注入到存储库中。如果您还让每个存储库扩展
org.springframework.jdbc.core.support.JdbcDaoSupport
类,那么您就可以使用派生的getJdbcTemplate()
来使用 JdbcTemplate 对象方法。您还可以让 Spring 为您处理事务处理。如果没有 XA 事务管理器,则每个数据源都需要一个事务管理器。对于许多事务管理器来说,使用
@Transactional
注释进行声明性事务支持是不可能的。但是,您可以将事务管理器注入到您的服务类中。参考文档 此处。You can configure each
javax.sql.DataSource
object to enable auto-commit if that does the job, or disable auto-commit and write the transaction logic programatically.Both the
java.sql.Connection
and thejavax.sql.DataSource
class have methods for enable/disable auto-commit.Regarding dependency injection and Spring, you can still inject a datasource object into your repository. If you also let each repository extend the
org.springframework.jdbc.core.support.JdbcDaoSupport
class, then you have a JdbcTemplate object available for you with the derivedgetJdbcTemplate()
method.You can also let Spring handle the transaction handling for you. Without a XA transaction manager, you need one transaction manager for each datasource. With many transaction managers, declarative transaction support with the
@Transactional
annotation is impossible. You can however, inject the transaction manager into your service class. This is described in the reference documentation here.