首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用@ transation注解在春季连接父级事务

问如何使用@ transation注解在春季连接父级事务
EN

Stack Overflow用户
提问于 2016-10-12 11:37:51
回答 2查看 2.5K关注 0票数 0

我对spring.Due中的事务非常陌生,对组织使用的一些代码标准来说,我要求在调用任何方法时加入父事务(如果存在)。

我的应用程序是一个有三层的Spring应用程序

  1. Web层(控制器类)
  2. 服务层(包含业务逻辑的服务类)
  3. DAO层(用于DB相关查询的DAO(数据访问层)类)

现在,在服务层的方法中,使用了三种不同的dao层方法。我使用@Transactional将此服务方法注释为事务性方法。现在,我希望从这个服务层方法调用的所有三个dao方法都是事务性的,并且必须加入由服务层方法启动的父事务,它坚持为每个dao方法启动其他新的翻译。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-12 15:25:03

您需要用REQUIRES_NEW传播来注释您的服务方法。这将标志着事务的开始。默认情况下,该方法调用的dao方法将继承事务行为并使用现有事务。

但是,如果要在代码中表示事务边界,可以使用REQUIRED (如果存在则参与事务,或者创建一个新的如果不存在)或MANDATORY (如果存在则参与事务,否则抛出异常)对它们进行注释。

代码语言:javascript
复制
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void serviceMethod() {}

@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod1() {}

@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod2() {}
票数 2
EN

Stack Overflow用户

发布于 2016-10-12 13:37:52

您可以将propagation元素与属性Propagation.MANDATORY一起使用在@Transactional注释中。这样,该方法支持当前事务,或者在没有活动事务时抛出异常。因此,在您的DAO层中,您可以这样做:

代码语言:javascript
复制
@Transactional(propagation=Propagation.MANDATORY)
public void daoMethod() { // some logic }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39997643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档