我对spring.Due中的事务非常陌生,对组织使用的一些代码标准来说,我要求在调用任何方法时加入父事务(如果存在)。
我的应用程序是一个有三层的Spring应用程序
现在,在服务层的方法中,使用了三种不同的dao层方法。我使用@Transactional将此服务方法注释为事务性方法。现在,我希望从这个服务层方法调用的所有三个dao方法都是事务性的,并且必须加入由服务层方法启动的父事务,它坚持为每个dao方法启动其他新的翻译。
发布于 2016-10-12 15:25:03
您需要用REQUIRES_NEW传播来注释您的服务方法。这将标志着事务的开始。默认情况下,该方法调用的dao方法将继承事务行为并使用现有事务。
但是,如果要在代码中表示事务边界,可以使用REQUIRED (如果存在则参与事务,或者创建一个新的如果不存在)或MANDATORY (如果存在则参与事务,否则抛出异常)对它们进行注释。
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void serviceMethod() {}
@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod1() {}
@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod2() {}发布于 2016-10-12 13:37:52
您可以将propagation元素与属性Propagation.MANDATORY一起使用在@Transactional注释中。这样,该方法支持当前事务,或者在没有活动事务时抛出异常。因此,在您的DAO层中,您可以这样做:
@Transactional(propagation=Propagation.MANDATORY)
public void daoMethod() { // some logic }https://stackoverflow.com/questions/39997643
复制相似问题