目前有两个主要的Java Object to Object映射框架取代了Dozer(http://dozer.sourceforge.net/documentation/mappings.html),它们是:
除了这个页面(http://vytas.io/blog/java/java-object-to-object-mapping-which-framework-to-choose-part-2/)之外,我无法在网上找到关于哪个框架比另一个框架更好,或者在什么情况下更好的框架。想知道是否有人可以对此有所了解。在基于文档的功能方面,它们似乎在做同样的事情。
答案 0 :(得分:77)
(MapStruct的原作者,所以我很有偏见)
实际上,这两个项目都基于在编译时生成映射代码的一般概念;我建议您使用MapStruct,原因如下:
JAXBElement
答案 1 :(得分:75)
(塞尔玛的原作者如此略微不同的观点)
Selma和MapStruct在完成同样的工作时遇到了一些差异。首先看来,Selma生成的代码比MapStruct(http://javaetmoi.com/wp-content/uploads/2015/09/2015-09-mapping-objet-objet2.png)快一点。 0.13版本号并未真正反映代码的成熟度。塞尔玛稳定且稳健,在生产中使用2年。
Selma背后的主要思想是禁止魔术转换,只是自动化所有映射而不会产生任何副作用。当映射看起来太复杂时,开发人员应该使用自定义映射或拦截器自己处理它。
Selma的足迹建立得尽可能小,我们只依赖于JavaWriter和JDK。
Selma尝试仅使用静态编译生成的代码而不在运行时进行任何反射或在字符串字段中编写伪代码。
您可以使用合成来构建映射器链,并且在单个映射器中,您可以使用可以基于每个方法覆盖的全局配置。
构建编译器消息是为了给开发人员提供早期反馈,解决问题的技巧和学习API。
最后,确保MapStruct功能更丰富,但Selma为开发人员提供了复杂映射所需的所有工具,并负责编写业务逻辑。从用户的角度来看,您还可以找到比其他API更好的两个API中的一个,因此最好的办法是尝试两者并选择您感觉更舒服的API。这不会是耗时的。