如何在单个事务中管理2个DAO方法?

时间:2015-05-07 10:34:13

标签: spring hibernate spring-mvc spring-transactions native-sql

我需要在一个事务中管理2个Dao方法,其中任何一个的失败都应该回滚另一个。调用方法位于服务层中。该技术用于Spring和Hibernate本机sql查询。有没有办法实现这个目标?
调用方法::     Message

叫做Method1 ::

@Transactional(propagation= Propagation.REQUIRED)
    public String save(AllowFileTypesForm formBeanObj,Hashtable global)

与此方法类似,还有另一种方法可以删除其他表中的数据。

2 个答案:

答案 0 :(得分:2)

它不会回滚,因为您正在捕获异常。 Spring的事务管理通过退出事务边界的异常来处理,这些异常由@Transactional AOP检测。

如果您捕获sql异常以进行日志记录或其他事情,则必须重新抛出或抛出新异常以启动回滚。

答案 1 :(得分:1)

在您调用这些DAO方法的服务方法上添加@TransactionalThis文章很好地总结了它的工作原理。