Ton*_*oni 2 spring jpa transactions spring-transactions
传播设置是必需的。
@Transactional(propagation = Propagation.REQUIRED)
Run Code Online (Sandbox Code Playgroud)
事务是读/写的。
这些在什么场景下使用?请给我举例说明
Spring事务默认是
@Transactional(propagation = Propagation.REQUIRED)
Run Code Online (Sandbox Code Playgroud)
因此您不需要指定传播属性。
那么,Spring 组件的注释意味着什么?@Transactional
Spring框架将启动一个新事务并执行所有方法,最后提交事务。
但是如果Spring容器中不存在事务,application context那么Spring容器将启动一个新事务。
Propagation.REQUIRED事务行为以嵌套方式在逻辑上分配给每个方法,但它们都在同一物理事务下。那么,结果是什么?
结果是,如果任何嵌套事务失败,则整个事务将失败并回滚(不要在数据库中插入任何值)而不是提交。
例子:
@Service
public class ServiceA{
@Transactional(propagation = Propagation.REQUIRED)
public void foo(){
fooB();
}
@Transactional(propagation = Propagation.REQUIRED)
public void fooB(){
//some operation
}
}
Run Code Online (Sandbox Code Playgroud)
说明 :
在此示例中,foo()方法分配了事务行为,并且在调用的foo()另一个方法内fooB()也是事务行为。这里的fooB()行为相当于嵌套事务foo()。如果fooB()由于任何原因失败,则foo()也无法提交。而是回滚。
| 归档时间: |
|
| 查看次数: |
3278 次 |
| 最近记录: |