如何解决春季交易流程
需要了解lockData的所有三个流是否都在一个事务中。当流程返回到类 A1 时,我可以看到表职员上的类 C1 添加的行锁吗?
当前的流为:A1
的实例调用B1
的实例,而该实例又依次调用C1
的实例
class A1 {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void lockData(){
B1 classBObj = ctx.getBean("B1");
boolean locked = classBObj.lockData();
//Check if lock on employee table is still there.
}
}
class B1 {
@Transactional(propagation = Propagation.REQUIRED)
public void lockData(){
C1 classCObj = ctx.getBean("C1");
classCObj.lockData();
return true;
}
}
class C1 {
public void lockData(){
executeQuery("select * from employee where emp_id=1 for update");
return true;
}
}
解决方法
如果使用的A1
实例是spring-bean并通过spring bean上下文注入,则可以,对a1.lockData()
的调用(及其所有嵌套调用)将在一个事务中执行。
出于完整性考虑,我建议用C1:lockData
注释@Transactional(propagation = Propagation.REQUIRED)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。