【问题标题】:How to correctly use Transaction, when working with JdbcTempalte?使用 JdbcTemplate 时如何正确使用事务?
【发布时间】:2020-08-31 08:03:26
【问题描述】:

我需要在 Spring 中使用 JdbcTemplate

例如,我有:

void someFunction() {
  // Some logic
  sql();

}

@Transactional
void sql() {
   jdbcTemplate.batchUpdate(...);
}

据我了解,这不是交易的有效用法。

那么,我可以对JdbcTemplate 使用@Transactional 注释,如下所示:

@Transactional
void someFunction() {
  // Some logic
  jdbcTemplate.batchUpdate(...);
}

还是使用TransactionTemplate更好?

【问题讨论】:

    标签: java spring transactions jdbctemplate


    【解决方案1】:

    是的,您可以像这样使用注释,但是请查看 Spring 文档的这部分声明

    '由于 Spring 的 AOP 框架基于代理的性质,根据定义,受保护的方法不会被拦截,对于 JDK 代理(这不适用)和 CGLIB 代理(这在技术上是可行的,但不推荐用于 AOP 目的)。因此,任何给定的切入点都将仅与公共方法匹配!'。

    因此,您的方法应该是公共方法,但目前不是。更新它,你的方法应该可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 2017-08-11
      • 2019-01-25
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多