【问题标题】:Data conversion pattern with Business Object, DTO and Entity/Domain Object具有业务对象、DTO 和实体/域对象的数据转换模式
【发布时间】:2021-01-12 09:40:04
【问题描述】:

在我的 Spring boot 项目中,我使用 hibernate,基本上我们有三种对象

  • 在控制器层中使用的 DTO 对象。
  • 业务对象 - 业务对象是我们在整个应用程序中使用的对象。
  • 实体/域对象 - 用于 JPA 层。

当我们准备好保存数据时,我们将业务对象转换为域/实体对象

当我们准备好将其发送给客户端/控制器时,我们可以将实体对象转换为 Business Obj,然后将这个 Business 对象转换为 DTO Obj。

理想情况下,我被告知将 BO 更改为 ->(DTO 和实体)以及反之亦然的转换逻辑驻留在 BO 本身中?

我们如何以有效的方式实现这一目标?谁能帮忙举个例子?

【问题讨论】:

    标签: spring design-patterns


    【解决方案1】:

    此任务没有灵丹妙药,但您可以考虑使用模型映射器;这是一个简单的例子https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application

    【讨论】:

      【解决方案2】:

      我喜欢在我参与的所有项目中使用Mapstruct

      我最喜欢它的几件事:

      1. 显然,您在编码转换上花费的时间更少(请查看主页上的“MapStruct in 2 Minutes”)
      2. 如果您要转换的类中的属性名称相同,那么您编写的代码就更少了。
      3. 它与spring集成得很好,所以不需要声明任何bean什么的,只要指定它是“spring”组件模型即可。
      4. 您可以通过多种方式映射实体 - 创建新实体,使用 DTO 中的值更新现有实体(例如)。
      5. 子对象也很容易映射。它具有内部机制,试图在其他映射器中选择正确的映射器方法。或者您可以自己指定其名称。

      尽管您也可以查看ModelMapper。非常相似的库,但我自己较少使用。所以不能提出任何特别的建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-23
        • 2012-08-14
        • 1970-01-01
        • 2016-08-10
        • 2013-08-17
        • 1970-01-01
        • 2011-03-14
        • 1970-01-01
        相关资源
        最近更新 更多