【问题标题】:Implementation layer in JavaJava中的实现层
【发布时间】:2018-07-17 16:40:20
【问题描述】:

DAOserviceDTOcontrollerentity层在爪哇。我在 DTO 中创建数据库表,因为实体是 POJO 类。控制器是我们使用 jersey 或一些 spring 控制器(RequestMapping...)编写 Web 服务调用的地方。

但我不了解服务层和 DAO 层。在 DAO 层,我们写了关于访问数据库的内容。在服务层,我们编写有关 Web 服务的实现。那么,我们是否在服务层使用 dao 对象。我想知道这个服务层和DAO层的简要概念。

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

    听起来你的想法是对的。

    DAO 是实际连接数据库并保存/检索数据的部分,服务层包含周围的业务逻辑。 DAO 通常从服务层调用。

    良好的做法是在 DAO 中放置尽可能少的业务逻辑,并将其留给服务层。

    【讨论】:

      【解决方案2】:

      这些是不同的逻辑实体:

      • DAO 层存在的目的只是提供与 DB 的连接(这就是为什么 DAO = 数据访问对象)并在其中执行 SQL 命令(例如使用 Hibernate)。
      • 服务层在从数据库发送的原始数据和客户端之间提供逻辑。在服务中,您调用 DAO 层来提供对象。在服务层面,你通常会执行业务相关的规则、验证、授权等。

      主要思想是不要让端点(@Controller@RestController)直接操作数据库层。

      【讨论】:

        【解决方案3】:

        DAO是一个数据访问对象,是一个提供抽象的对象 数据库接口。 DAO 提供了一些特定的数据操作 不暴露数据库的细节

        但是 DAO 没有或不应该有特定的业务逻辑,如果你除了 CRUD 操作之外还有更多的业务逻辑要应用,你也需要一个服务层。

        这个 DAO 可以做 CRUD 操作,它可以创建、检索、更新数据, 从我们的表中删除。

        我们DAO的界面应该是这样的:

        public interface UserDao {
            User getUser();
            Set<User> getAllUsers();
            User getUserByUserNameAndPassword();
            boolean insertUser();
            boolean updateUser();
            boolean deleteUser();
        }
        

        如果您需要在执行 CRUD 操作或记录之前验证访问权限,服务层将承担业务逻辑,这些是一些示例。

        架构中,Controller -> 服务层 -> DAO -> 实体... 控制器引用了服务层,服务引用了DAO

        有关此链接的更多信息: https://dzone.com/articles/building-simple-data-access-layer-using-jdbc https://en.wikipedia.org/wiki/Data_access_object

        【讨论】:

          猜你喜欢
          • 2016-04-14
          • 1970-01-01
          • 2015-05-28
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 1970-01-01
          • 2017-04-02
          • 1970-01-01
          相关资源
          最近更新 更多