java - 使用 Spring Boot 代替 DTO、Dao、Service 的设计模式?
问题描述
我最近开始阅读一本书,它更详细地解释了数据库的操作,尤其是它们之间的关系。问题是这本书有点旧,从 2014 年开始。所以我提出以下问题,你可以澄清一下,请:
书中我们使用了 Dao、Dto 和 Service 模式,但我们不能使用 JPA、Spring Boot Repository 或其他新技术来“替换”书中介绍的旧实现吗?
如果是这样,你能给我一个替代下面代码的方法吗?它是如何工作的?我可以改进什么,我可以放弃什么,我应该完成什么,我应该学习什么,拜托!
本书将应用程序的实现分为 2 个团队:
UserInterface(实体的数据传输对象,内存数据库和控制器中的单例作为模拟服务和视图)
开发团队(创建实体并使用 TDD 进行测试,为该实体、业务服务层和表示层创建 DAO
所以,我可以改变这种创建和操作应用程序和数据库的方式,如果可以,如何以及为什么?我应该使用什么,我该怎么做?
这是我目前正在阅读的书的 git:https ://github.com/Spring-Hibernate-Book/spring-hibernate-datamodeling-tdd-rest/tree/master/Spring-OODD/src
解决方案
就分工而言,在控制器层上有一个单独的团队工作的概念似乎已经过时了。可能是单页 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 编程模型
推荐阅读
- python - 获取由 SQLAlchemy 和 psycopg2 执行的所有 SQL 语句的文本表示?
- reactjs - 状态已设置,但 firebase 未注册第一次点击
- jquery - JQuery on load 函数改变加载图像的 CSS 属性
- json - 如何阅读/解析 Firebase 响应 .createUserWithEmailAndPassword
- python - 如何运行多线程刮板
- sql-server - 在 SQL Server 中隐藏数据
- datastax - 如何使用用户定义的函数获取 cassandra 的 blob 列的大小?
- c# - DocuSign C# SDK 方法线程安全吗?
- react-native - react-native run-android 从终端失败
- powershell - 在 PowerShell 中获取字符串的权利