【问题标题】:DAO, SERVICE layer what forDAO、SERVICE层是干什么用的
【发布时间】:2020-02-19 08:09:45
【问题描述】:

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

【问题讨论】:

  • @Transactional 用于服务层,因此可以在单个事务中完成多个 dao 方法。

标签: spring service architecture dao layer


【解决方案1】:

因为有很多方法可以管理交易,称为交易传播

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 :使用底层事务系统的默认超时,如果不支持超时,则不使用。

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2023-03-07
    • 2017-05-25
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多