首页 > 解决方案 > 使用 Spring Boot 代替 DTO、Dao、Service 的设计模式?

问题描述

我最近开始阅读一本书,它更详细地解释了数据库的操作,尤其是它们之间的关系。问题是这本书有点旧,从 2014 年开始。所以我提出以下问题,你可以澄清一下,请:

书中我们使用了 Dao、Dto 和 Service 模式,但我们不能使用 JPA、Spring Boot Repository 或其他新技术来“替换”书中介绍的旧实现吗?

如果是这样,你能给我一个替代下面代码的方法吗?它是如何工作的?我可以改进什么,我可以放弃什么,我应该完成什么,我应该学习什么,拜托!

本书将应用程序的实现分为 2 个团队:

所以,我可以改变这种创建和操作应用程序和数据库的方式,如果可以,如何以及为什么?我应该使用什么,我该怎么做?

这是我目前正在阅读的书的 git:https ://github.com/Spring-Hibernate-Book/spring-hibernate-datamodeling-tdd-rest/tree/master/Spring-OODD/src

标签: javadatabasespring-boothibernatedesign-patterns

解决方案


就分工而言,在控制器层上有一个单独的团队工作的概念似乎已经过时了。可能是单页 UI 有自己的团队,但许多地方更喜欢由同一个人从前到后为功能工作,以减少团队之间沟通问题的机会。

您需要 DTO 的程度应由开发人员自行决定。过去常常将所有实体复制到 DTO 中以避免 UI 中的延迟加载等问题。如果您正在构建一个单页应用程序,将 JSON 传递给 UI,这不是问题。单页应用程序架构提供了 UI 关注点之间的更好分离,在大多数情况下减少了 DTO 的必要性。

对于其余部分,概念应该映射。Spring JPA 存储库与数据访问对象具有相同的功能,它只是为您提供了更多的实现。与 Hibernate 映射相关的最大变化是改用 JPA 注释。服务没有改变。

TLDR

发生变化的事情:

  • 单页应用程序已经取代了 JSP 等服务器端方法
  • 标准化 JPA 而不是 Hibernate
  • 配置类,不再有应用程序上下文 XML
  • 简介
  • 专注于微服务与单体应用
  • 包括更多电池(默认为 h2,可部署的 jars,约定优于配置)

没有改变的事情:

  • 控制器调用服务调用数据访问的通用分层方案
  • Hibernate 映射策略和一般 ORM 问题
  • Spring事务支持
  • 带有 bean、DI、AOP 的通用 Spring 编程模型

推荐阅读