【发布时间】:2018-02-23 16:25:55
【问题描述】:
我正在构建一个应用程序,我想在其中使用 Spring JDBC 进行数据库访问,我正在尝试决定是否应该使用 NamedParameterJdbcTemplate 或 TransactionTemplate。
TransactionTemplate 的文档说:
模板类可简化程序化事务划分和 事务异常处理。
中心方法是#execute,支持事务代码 实现 TransactionCallback 接口。该模板处理 事务生命周期和可能的异常,这样既不 TransactionCallback 实现和调用代码都需要显式 处理交易。
但对于NamedParameterJdbcTemplate,它只说:
具有一组基本 JDBC 操作的模板类,允许使用 命名参数而不是传统的“?”占位符。
这个类委托给一个包装好的#getJdbcOperations() JdbcTemplate 一旦从命名参数替换为 JDBC 样式 '?'占位符是 在执行时完成。
这是否意味着如果我在我的应用程序中配置事务管理器,即使使用NamedParameterJdbcTemplate,我也不会在失败时得到回滚
如果不是,那么这两个类之间的区别是什么?我应该考虑什么来选择一个而不是另一个?
【问题讨论】:
标签: java spring transactions spring-jdbc