gpt4 book ai didi

java - Java EE 项目中的服务层是否有必要通过 DAO 层与实体对话?

转载 作者:搜寻专家 更新时间:2023-10-31 19:48:31 26 4
gpt4 key购买 nike

我正在阅读 this article在 EJB 3.0 上,作者描述了一种架构,其中服务层通过作为无状态 session bean 实现的 DAO 与实体对话。

我试图理解为什么我们需要这个额外的层。为什么服务层不能直接与实体对话?我想到的一个想法是——易于测试。我们可以通过模拟 DAO 轻松地测试服务层。

这是唯一的原因,还是还有其他原因?

最佳答案

这个想法是将业务逻辑(或服务层)与实际的持久性策略解耦。您的实体可以存储在平面文件或数据库中。您应该能够在不影响您的业务层的情况下更改此持久性策略。

the service layer talks to the Entities through a DAO

这句话有点歧义。在 EJB 3.0 中,业务实体是 POJO。业务层可以使用它们,数据访问层也可以。业务层直接与业务实体“对话”。但它也与数据访问层对话。数据访问层主要负责加载和保存实体。

事务划分是另一个需要处理的问题。使用 EJB 3.0,业务层独立于所选择的持久性策略来划分事务。数据访问层和业务实体应该执行业务层的事务。

We can test the service layer easily by mocking the DAO's.

是的。可以使用模拟数据访问层来测试业务层。可以在没有业务层的情况下测试数据访问层。同样,这很容易,因为业务实体是 POJO,可以被任一层使用。数据访问层所需的信息通过注解提供,注解与业务层无关,但不从业务角度对业务实体的建模施加约束。

关于java - Java EE 项目中的服务层是否有必要通过 DAO 层与实体对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com