【问题标题】:JPA and DTO's, best way to create DTO's?JPA 和 DTO,创建 DTO 的最佳方式?
【发布时间】:2010-08-08 19:21:00
【问题描述】:

我们将使用 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)

或者还有其他选择吗?

【问题讨论】:

    标签: java hibernate orm jpa dto


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我采纳了你的建议,在我的 POM 中添加了推土机,并设法删除了 75% 的样板代码..
    • 一个提示:远离推土机。它要求您打破封装,当某些事情失败时,它是在运行时而不是编译时。它目前基于 xml(=xml 地狱)。最后但并非最不重要的一点:推土机很慢......
    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    相关资源
    最近更新 更多