我对spring的交易很新。由于我的组织使用了一些代码标准,我要求在调用任何方法时加入父事务。
我的应用程序是一个有三层的Spring MVC应用程序
现在在服务层上的方法中使用了三种不同的dao层方法。我已经使用@Transactional将此服务方法注释为事务性的。现在我希望从这个服务层方法调用的所有三个dao方法本质上也是事务性的,并且必须加入由服务层方法启动的父事务,并坚持为每个dao方法启动其他新的翻译。
答案 0 :(得分:1)
您需要使用REQUIRES_NEW
传播来注释您的服务方法。这将标志着交易的开始。默认情况下,如果此方法调用dao方法将继承事务行为并使用现有事务。
但是,如果要在代码中表示事务边界,可以使用REQUIRED
对其进行注释(如果存在则参与事务或创建新的if ifn不存在)或{{1 (如果存在则参与事务,否则抛出异常)。
MANDATORY
答案 1 :(得分:0)
您可以使用propagation
注释中的@Transactional
元素和属性Propagation.MANDATORY
。有了这个,该方法支持当前事务,或者如果没有活动事务则抛出异常。因此,在您的DAO层中,您可以执行以下操作:
@Transactional(propagation=Propagation.MANDATORY)
public void daoMethod() { // some logic }