DAO、SERVICE层是做什么用的

DAO, SERVICE layer what for

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

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

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

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

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

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

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

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

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

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