我们将使用 DTO 向表示层发送数据或从表示层发送数据。
我在名为 PostAd
的服务对象上有一个方法,它发布用户输入的广告。 Ad
与另一个名为 AdValues
的对象相关联,该对象包含 Ad
的值(标题、价格、描述等)
@Entity
public class Ad {
@OneToMany
Set<AdValue> values ...
...
我想知道就 DTO 架构而言,什么更好:
有两个 DTO,一个叫
AdDTO
,另一个叫AdValuesDTO
,调用PostAd
方法作为PostAd(AdDTO , AdValuesDTO)
~or~有一个
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/