【问题标题】:Specific use case for Dozer bean-to-bean mapping?Dozer bean-to-bean 映射的具体用例?
【发布时间】:2014-10-31 18:16:29
【问题描述】:

我很想从根本上理解Dozer Mapping 框架解决了哪些问题。

根据他们的教程,Dozer:

Dozer 是一个 Java Bean 到 Java Bean 的映射器,它递归地将数据从一个对象复制到另一个对象。通常,这些 Java Bean 将具有不同的复杂类型。

他们文档中的代码示例:

Mapper mapper = new DozerBeanMapper();
DestinationObject destObject = new DestinationObject();

mapper.map(sourceObject, destObject);

但这与HashMap 有何不同?与标准 JRE Map 实现相比,Dozer 地图给我们带来了什么好处?我可以使用 JRE 完成与上述相同的事情:

Map<SourceObject, DestinationObject> mapper = new ConcurrentHashMap<SourceObject, DestinationObject>();
mapper.map(new SourceObject(), new DestinationObject());

我错过了什么?

【问题讨论】:

    标签: java mapping javabeans dozer cloning


    【解决方案1】:

    想象一下这种情况。你有一个实体类,它有很多字段,并且想将这个类传递给另一个应用程序。但是,您不想传递所有字段值,因为您只想共享某些字段(也许您的字段应该保持私有)。

    所以,大多数时候,我们通过两个类实现来处理这个问题.. 实体和实体的“可移植”版本,它没有我们不想共享的字段等等。这称为 DTO(数据传输对象)。

    没有推土机,我们必须创建便携式版本,并从实体中设置它的所有字段..

    PortablePerson portPerson = new PortablePerson();
    portPerson.setId(person.getId());
    portPerson.setName(person.getName());
    ...
    ...
    

    Dozer 为我们完成了所有这些繁琐的工作。只要在真实类和可移植类之间调用相同的字段,dozer 映射就可以在没有任何配置的情况下工作。

    希望对你有帮助!

    【讨论】:

    • 谢谢@menndieta! 说得通,请用该示例更新推土机文档 :-) 再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多