我想从根本上理解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映射无需任何配置即可工作。
希望能帮助到你!