我们可以耐心地将实体转换为dto / pojo对象吗?

时间:2019-05-15 13:32:30

标签: java entity getter-setter pojo

有什么方法可以将实体部分转换为dto对象?还是在MVC模式中使用实体,pojo / dto和响应对象有最佳实践?

2 个答案:

答案 0 :(得分:0)

您有几种方法。我假设您有一个Web项目。

  1. 手动映射方法。。创建D可以将其手动映射到您的实体。这将涉及周围的所有样板代码-生成器,所有自变量Constructor,getters,setters,无论您将使用哪种方法来填充DTO。 不同的水化技术适用于不同的情况。构建器模式假定您将拥有一个不变的对象。框架的杰克逊(Jackson)支持开箱即用的Getter和Setters。您可以决定使用lombok,imutables或其他框架来最小化样板代码。
  2. 映射框架。另一种选择是使用提供的映射器,例如ObjectMapper或FastMap,可能还有其他选择。这将删除您需要按照方法1建立的大部分手动映射。
  3. 反序列化器。这种方法的示例是 spring-data-rest ,其中您的存储库将直接返回实体,然后将其序列化为JSON。使用正常的spring MVC,这将直接将您的实体返回到控制器层,并基于注释或其他方式(序列化器)将其映射到您的网络格式JSON,XML(无论使用什么)。

这些是不同的选项。哪一个最好取决于您的用例。

答案 1 :(得分:0)

可能的方法之一是复制构造函数。下面的示例。

// entity annotations ...
public class EntityExample {

    private Long id;
    private String name;
    private Integer score;

    // getters and setters ...
}


public class DtoExample {
    private Long id;
    pricate String name;

    // For serialization and deserialization
    public DtoExample() {

    }

    public DtoExample(EntityExample entity) {
        this.id = entity.getId();
        this.name = entity.getName();
    }

    // getters and setters ...
}