在不与数据库对话的方法中使用 Spring 的 @Transactional 注释是否有意义?
Does it make sense to use Spring's @Transactional annotation in a method which doesn't talk to database?
我正在尝试了解一个涉及 spring 的声明性事务注释的项目。该函数的主体未进行任何 JDBC 调用或调用 JPA 存储库方法。它所做的只是调用一些第三方 API 并转换它的结果,它甚至没有将响应保存在数据库中。所以根本没有数据库交互。
我的问题是是否值得在此方法上使用@Transactional 注释?因为根据我的理解,@Transactional 仅有助于保持数据库的一致性。
@Transactional
注释定义了单个数据库事务的范围 - 它所做的只是开始事务并提交或回滚。它允许以声明方式管理事务,而不是每次都以编程方式进行。
看起来像这样:
UserTransaction utx = entityManager.getTransaction();
try {
utx.begin();
// your method invocation here
utx.commit();
} catch(RuntimeException ex) {
utx.rollback();
throw ex;
}
在没有数据库调用时使用方法 @Transactional
只会使它的性能变差,因为在不必要时必须执行冗余步骤。
我正在尝试了解一个涉及 spring 的声明性事务注释的项目。该函数的主体未进行任何 JDBC 调用或调用 JPA 存储库方法。它所做的只是调用一些第三方 API 并转换它的结果,它甚至没有将响应保存在数据库中。所以根本没有数据库交互。
我的问题是是否值得在此方法上使用@Transactional 注释?因为根据我的理解,@Transactional 仅有助于保持数据库的一致性。
@Transactional
注释定义了单个数据库事务的范围 - 它所做的只是开始事务并提交或回滚。它允许以声明方式管理事务,而不是每次都以编程方式进行。
看起来像这样:
UserTransaction utx = entityManager.getTransaction();
try {
utx.begin();
// your method invocation here
utx.commit();
} catch(RuntimeException ex) {
utx.rollback();
throw ex;
}
在没有数据库调用时使用方法 @Transactional
只会使它的性能变差,因为在不必要时必须执行冗余步骤。