gpt4 book ai didi

java - 使用数据库@Entity 类进行 REST 公开?

转载 作者:行者123 更新时间:2023-11-30 08:10:56 26 4
gpt4 key购买 nike

@Entity
class MyEntity {
//some properties to be explosed to REST, some not
}

我有一些数据库类,我想使用 spring 通过 REST 展开。

是否建议为每个数据库类创建一个 DTO,复制所有需要公开的属性。

因为肯定有一些字段,比如 id 不应该通过 rest 获得。但是这些字段也许可以相应地进行注释,以便在 REST 提供期间忽略它们?

如果 DTO 只是用作从数据库复制字段的普通数据容器,那么在今天是否仍然建议编写 DTO?

最佳答案

我在做决定时可以考虑的几点:

争论反对持久性和网络服务的通用模型

  1. 在许多应用程序中,编写其余服务是为了为您提供一个完整构造的对象,而不是真正的数据规范化 View 。例如,您的休息服务可能会返回一个带有 Department 对象的 Employee 对象,而您的数据库模型只有一个 deparment id
  2. 对 1 个模型的修改不会影响另一个模型。例如,您决定将持久性模型中的字符串更改为整数,您可能仍然可以在休息服务中将其保留为字符串
  3. 您可能在剩余模型中拥有一些属性,这些属性在持久性模型中毫无意义,反之亦然
  4. 如果您要分发模型 jar(如客户端 API),那么它最终可能会依赖您的持久性框架,而您的客户可能不希望/不支持。

参数支持持久性和网络服务的通用模型

  1. 避免为每次交互复制/克隆数据
  2. 避免重复维护或在一个模型中添加属性而在另一个模型中遗忘时可能出现的问题

根据我的经验,如果您正在创建专门供您自己的应用程序使用的服务(如 UI)并且对这些服务有严格的控制,您可能会使用通用模型而逃脱

但是,如果其余 API 旨在用于更广泛的用途和长期使用,我会选择单独的模型。您可以使用 spring 的 beanutils 来简化模型从一种格式到另一种格式的转换。参见示例 here

关于java - 使用数据库@Entity 类进行 REST 公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438611/

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