gpt4 book ai didi

java - 我是否也应该在 spring 中为子方法添加 @Transactional 注释?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:09 26 4
gpt4 key购买 nike

我有一个主要的 DB 处理程序方法,它调用其他方法,这些方法也与 BD 事物一起工作。

我为 main 方法添加了 @Transactional 注释,因为如果出现问题,我想回滚所有内容。

我的问题是:我是否也应该为子方法加上这个注解,否则它会知道子方法是从事务性方法调用的。

比如删除方法中出现异常,如何保证写入部分也回滚:

@Transactional
public void maintDbTings() {
writing();
deleting();
}

@Transactional //do I need this?
public void writing() {
//no exceptions
}

@Transactional //do I need this?
public void deleting() {
//exception occurs
}

最佳答案

Spring 在遇到用 @Transactional 注释的方法时开始事务。交易范围涵盖该方法的执行,该方法调用的任何方法的执行,以及依此类推,直到方法返回。配置的涵盖的任何托管资源PlatformTransactionManager 和您在交易范围内使用的参与交易。例如,如果您使用 org.springframework.jdbc.datasource.DataSourceTransactionManager,则从链接的 DataSource 检索连接自动参与交易。事务以两种方式之一终止:要么方法直接完成执行,事务管理器提交事务,要么方法抛出异常,事务管理器回滚事务。

我希望现在一切都清楚了。

关于java - 我是否也应该在 spring 中为子方法添加 @Transactional 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42644669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com