java - JPA 和 DTO,创建 DTO 的最佳方式?

标签 java hibernate orm jpa dto

我们将使用 DTO 向表示层发送数据或从表示层发送数据。

我在名为 PostAd 的服务对象上有一个方法,它发布用户输入的广告。 Ad 与另一个名为 AdValues 的对象相关联,该对象包含 Ad 的值(标题、价格、描述等)

@Entity
public class Ad {
   @OneToMany
   Set<AdValue> values ...
   ...

我想知道就 DTO 架构而言,什么更好:

  1. 有两个 DTO,一个叫 AdDTO,另一个叫 AdValuesDTO,调用 PostAd 方法作为 PostAd(AdDTO , AdValuesDTO) ~or~

  2. 有一个 AdDTO,其中包含模仿实体结构的 AdValuesDTO...这涉及在 DTO 中包含 DTO:

    AdDTO {
      Set<AdValuesDTO> adValues ...
    

然后 PostAd 方法被调用为 PostAd(AdDTO)

或者有其他选择吗?

最佳答案

两者都可以,但使用后一种方法,您还可以使用 DTO 将数据服务器发送到客户端。而且由于拥有 DTO 已经很难维护且成本很高,所以您真的不想像耶稣用面包那样使它们成倍增加。

因此,根据我的经验,当您使用 DTO 时,您实际上最终会拥有一个与您的实体平行的对称结构,您可以在客户端和服务器之间的两个方向上使用它。这使用了像 Dozer 这样的映射解决方案。可能,或者至少更容易(并且欢迎任何可以减少使用 DTO 痛苦的方法)。

关于java - JPA 和 DTO,创建 DTO 的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435715/

相关文章:

hibernate - Grails-乐观锁定-两次可能的更新之间的时间

java - 保存实体后,Hibernate 为使用@Formula 注释的实体属性返回 null

java - OptimisticLockException Ebean 即使使用@Version

java - 用对象重写Java中的equals方法

java - Parquet 格式的 Mapreduce 错误

java - 在模型类中使用 javafx.beans 属性

javascript - JS Sequelize "Where Related"查询?

c# - 为什么我应该在我的 EF 顶部构建一个包含工作单元的存储库模式?

java - openfire smack发送包404错误是什么意思?

java - 参数传递和方法调用