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

根据他们的教程,推土机:


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


他们的文档中的代码示例:

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

mapper.map(sourceObject, destObject);


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

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


我在这里想念什么?

最佳答案

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

因此,在大多数情况下,我们通过两个类实现来处理此问题:。实体和该实体的“便携式”版本,其中没有我们不想共享的字段,等等。这称为DTO(数据传输对象)。

没有推土机,我们必须创建可移植版本,并从实体中设置所有字段。

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


Dozer为我们完成了所有繁琐的工作。只要在真实类和可移植类之间将字段称为相同,则dozer映射无需任何配置即可工作。

希望能帮助到你!

07-26 07:10