我从根本上理解Dozer Mapping框架解决了哪些问题。
根据他们的教程,推土机:
Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。
他们的文档中的代码示例:
Mapper mapper = new DozerBeanMapper();
DestinationObject destObject = new DestinationObject();
mapper.map(sourceObject, destObject);
但这与HashMap
有什么不同? Dozer地图通过标准JRE Map
实施给我们带来了什么好处?我可以用JRE完成与上面相同的事情:
Map<SourceObject, DestinationObject> mapper = new ConcurrentHashMap<SourceObject, DestinationObject>();
mapper.map(new SourceObject(), new DestinationObject());
我在这里缺少什么?
答案 0 :(得分:3)
想象一下这种情况..你有一个实体类,它有很多字段,并希望将这个类传递给另一个应用程序。但是,您不想传递所有字段值,因为您只想共享某些字段(也许您有字段可以保持私有)。
所以,大多数时候,我们通过两个类实现来处理这个问题..实体和实体的“可移植”版本,它没有我们不想共享的字段等等这被称为DTO(数据传输对象)。
如果没有推土机,我们必须创建便携版本,并从实体中设置所有字段..
PortablePerson portPerson = new PortablePerson();
portPerson.setId(person.getId());
portPerson.setName(person.getName());
...
...
Dozer为我们做了所有这些繁琐的工作..只要在真实类和便携式类之间调用相同的字段,推土机映射就可以在没有任何配置的情况下工作。
希望它有所帮助!