在我的应用程序中,我有几个不同方法上的
例如,在一个
@Transactional
注释。它们使用Crud Repository
在数据库上执行删除操作。我想知道这些删除操作是在什么阶段执行的,是否需要所有@Transactional
注释?例如,在一个
façade方法
中调用了2个删除方法
,然后在runner
中调用了facade方法:
1. 方法 1:
@Transactional
public void deleteFromSchemaOne(){
}
1. 方法2:
@Transactional
public void deleteFromSchemaTwo(){
}
2. 在外观方法中调用这两个方法:
@Transacational
public void deleteFromAllSchemas(){
deleteFromSchemaOne();
deleteFromSchemaTwo();
}
3. 在运行器中调用外观方法
@Transactional
public void run(String... args) throws Exception {
service.deleteFromAllSchemas();
}
我想知道的是:
我的删除操作实际上将在哪个阶段被执行?是在Runner方法完成时吗?
编辑:
带有循环的Facade方法:
public void deleteFromAllSchemas() {
for(int i = 0; i < list.size(); i++){
deleteFromSchemaOne();
deleteFromSchemaTwo();
}
}
deleteFromAllSchemas()
中使用@Transactional
实现的。如果发生错误,它将回滚对deleteFromSchemaOne()
和deleteFromSchemaTwo()
所做的任何更改。你真的应该了解一下事务处理。它们不是你可以只靠希望就能正确处理或者“边干边学”的东西。 - Kayaman@Transactional(propagation=Propagation.MANDATORY)
注释删除方法。 - tkralik