首页 > 解决方案 > DAO,SERVICE层是干什么用的

问题描述

这两层是什么?为什么我们必须在服务中执行 dao-method?为什么我们应该只在服务方法字段中使用@Transactional。为什么我们不能直接在 dao 方法上使用 @Transactional 并且不使用服务?

标签: springservicearchitecturedaolayer

解决方案


因为有很多方法可以管理称为事务传播的事务

TransactionDefinition.PROPAGATION_MANDATORY :支持当前事务;如果当前不存在事务,则抛出异常。

TransactionDefinition.PROPAGATION_NESTED :如果当前事务存在,则在嵌套事务中执行。

TransactionDefinition.PROPAGATION_NEVER :不支持当前事务;如果当前事务存在,则抛出异常。

TransactionDefinition.PROPAGATION_NOT_SUPPORTED :不支持当前事务;而是始终以非事务方式执行。

TransactionDefinition.PROPAGATION_REQUIRED :支持当前事务;如果不存在则创建一个新的。

TransactionDefinition.PROPAGATION_REQUIRES_NEW :创建一个新事务,如果存在则暂停当前事务。

TransactionDefinition.PROPAGATION_SUPPORTS :支持当前事务;如果不存在,则以非事务方式执行。

TransactionDefinition.TIMEOUT_DEFAULT :使用底层事务系统的默认超时,如果不支持超时,则不使用。


推荐阅读