@Transactional 带有 1 个保存语句

@Transactional with 1 save statement

用spring的@Transactional 方法标记一个保存语句有意义吗? 例如:

// does it make sense mark it with @Transactional if it only has 1 save sentence?
@Transactional
public void saveMethod() {
    user.save()
}

是的,因为数据库上的任何 "modifications" 都需要事务(以提交更改)。你可能不这么认为,因为 auto-commit,但最后,某处仍然有一笔交易。

但是明确定义事务的边界总是一件好事(事务何时开始和何时提交)。

如果您正在使用 Spring 数据接口,则不需要使用 @transactional 注释。只有在你想提供对数据库的两次执行并且你想共享事务的情况下,才可以回滚这两个操作。

无论如何,最好将@transactional 用作只读查询(将 FlushMode 设置为 MANUAL 以使持久性提供程序在关闭 EntityManager 时可能跳过脏检查),因此我建议将 @transactional 设置为服务层和只读获取查询。