java - 使用 JdbcTempalte 时如何正确使用事务?
问题描述
我需要JdbcTemplate
在 Spring 中使用。
例如,我有:
void someFunction() {
// Some logic
sql();
}
@Transactional
void sql() {
jdbcTemplate.batchUpdate(...);
}
据我了解,这不是交易的有效用法。
那么,我可以使用@Transactional
注释JdbcTemplate
如下:
@Transactional
void someFunction() {
// Some logic
jdbcTemplate.batchUpdate(...);
}
还是使用TransactionTemplate更好?
解决方案
是的,您可以使用这样的注释,但是请查看 Spring 文档的这一部分
'由于 Spring 的 AOP 框架基于代理的性质,根据定义,受保护的方法不会被拦截,对于 JDK 代理(不适用)和 CGLIB 代理(这在技术上可行但不推荐用于 AOP 目的) . 因此,任何给定的切入点都将仅与公共方法匹配!'。
因此,您的方法应该是公共方法,但目前不是。更新它,你的方法应该有效。
推荐阅读
- django - 如何检查 Django 中是否存在特定记录?
- javascript - 为什么 Vue 认为字符串操作是响应式数据属性?
- ruby - 合并多个大哈希
- flutter - Dart/Flutter 中 Intl 包的 NumberFormat 的反直觉结果
- javascript - 获取包含变量的数据
- xml - 无法打开 jmeter 5.2.1 - 无法将 org.apache.jorphan.collections.ListedHashTree 转换为 org.apache.jmeter.testelement.TestElement
- google-maps - Flutter:从列表视图中滚动排除一个对象
- c# - 在 sum 之后对 DataGridView 进行微调时出现问题
- javascript - 单击段落标题可隐藏和显示以下段落。尝试为每个部分调用相同的 Javascript 函数
- r - 在 R 中建立总和索引