在使用@Transactional(propagation = Propagation.REQUIRED)
启动的当前事务中使用@Transactional(propagation = Propagation.REQUIRED
public void startParentTransaction() {
ChildObject childObject = newChildTransaction();
childObject.lazyLoadedAttribute();
ChildObject childObject = newChildTransaction();
childObject.lazyLoadedAttribute();
}
@Transactional(propagation = Propagation.REQUIRES_NEW
public ChildObject newChildTransaction() {
ChildObject childObject = callRepositoryOrDao();
childObject.changeState();
return childObject;
}
)启动新事务时,是为新事务创建的新会话吗?
如果上述情况属实,是否有办法只对所有交易使用一个会话?
这是一个直观的例子:
childOjbect.lazyLoadedAttribute()
对LazyInitializationException
的调用是否有效?或者会Session
被抛出?
我们可以在一个body {
font-family: Tahoma;
font-size: 16px;
}
#point1 {
font-family: Verdana;
color: orange;
margin-top: 10px;
margin-bottom: 10px;
}
#point2 {
font-family: Impact;
color: red;
margin-top: 10px;
margin-bottom: 10px;
}
#point3 {
font-family: Georgia;
color: pink;
margin-top: 10px;
margin-bottom: 10px;
}
#point4 {
font-family: Tahoma;
margin-top: 10px;
margin-bottom: 10px;
}
中进行所有交易吗?
答案 0 :(得分:0)
你必须使用Spring @Transactional
注释。
通常情况下,即使存在特定交易,Propagation.REQUIRE_NEW
也会启动新交易。
但是如果你在本地调用newChildTransaction
(只是在同一个方法中),那么spring AOP没有机会与@Transaction
注释进行交互。
因此,在这种情况下,newChildTransaction()
使用现有的交易