java - 服务层返回对象类型

标签 java spring-boot dao

您知道,对于 API 项目,有许多模式可以检索数据并向客户端提供数据。 Controller <-> Service <-> Dao模式是这些模式之一。

从服务层返回任何类型的对象都可以吗?还是服务层返回对象必须是相关实体?

例如,我们有User , UserService , UserDao 。 UserService 返回类型应该是 User 还是任何类型的对象都合适?

服务层中的逻辑操作迫使我使用其他对象作为返回类型。

这种情况的最佳实践是什么?

最佳答案

我发现我需要 3 种类型的对象来保持事情的可管理性(我仍在努力想出一个合适的命名策略)。有时这样做是有益的:

  1. 从数据层返回的对象 - 这些对象将由您的数据实现决定。例如,如果您决定以不同方式存储数据,它们可能会发生变化。也许您决定序列化一个对象并将其存储为 JSON,而不是将其存储在单独的表中,或者您从 SQL 迁移到 NOSQL。
  2. 从域层返回的对象 - 这些是应用程序对象,应该对您的域进行建模。它们不应包含任何特定于您的数据实现的内容。
  3. 发送到 API 和从 API 发出的对象 - 使用单独的序列化对象来塑造您的 API 非常有用。这意味着您可以调整 API,而无需触及业务逻辑。在某些项目中,我有 v1、v2 等多个版本的 API 对象。

关于java - 服务层返回对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43888351/

相关文章:

java - 为什么直接从 Servlet 访问 DAO 是一种不好的做法?

java - 如何在 spring 项目中为实体类和 DTO 自动生成 Junit 测试用例

mysql - 如何通过sql查询获取文件的文件扩展名?

java - 不将数字选择器十进制整数传递给新 Activity

java Protocol Buffer - 使用给定的字段号和扩展注册表填充子消息

javascript - thymeleaf 表达式

spring-boot - Spring Boot 2.4.4升级后启动失败

java - DAO 和连接

java - Java 8 foreach 函数中多于 1 个命令

Java map 一对一替换