Hace unas semanas, he tenido que hacer una migración de Orika a Dozer y me resultó bastante interesante, tanto como para traer un pequeño ejemplo con Dozer.
Antes de empezar, me gustaría compartir con vosotros este post en Stackoverflow, sobre los mappings de Java y el estado de algunos de ellos, no dudéis entrar: enlace.
QUÉ OPINO SOBRE LOS MAPPERS
Hace tiempo quería subir, un pequeño post, hablando sobre la utilidad de este tipo de mappers genéricos.
Cuando realmente, buscas un mapper, buscas flexibilidad y que se adapte a tu dominio, sin necesidad de hacer excesivos «custom mappers», que este mecanismo te ahorre un tiempo considerable, ya que el performance de tu aplicación se ve comprometido, con este tipo de herramientas.
Si bien, el rendimiento es muy similar entre ellos, si que es bastante mayor que hacer un mapper custom por cada entidad origen -> entidad destino, aún así tiene que tener sentido utilizar este tipo de librerías.
Con el tiempo, me he dado cuenta, que siempre hay que picar, más código del que esperas, ya que en la documentación, te lo ponen extremadamente sencillo y aparentemente con todos los casos cubiertos. Pero amigos míos, ni de coña.
PORQUE LA MIGRACIÓN A DOZER
El motivo, fue bastante sencillo, añadir mediante XML, nuevos mappers, sin que afectase o se añadiese una linea de código (pobres diablos).
Realmente, para algunos casos si es posible, pero para casos muy concretos y por supuesto el lenguaje EL, que nos trae Dozer, nos sirve de bien poco para añadir funcionalidad mediante xml.
TIPOS DE CONFIGURACIÓN
Con Dozer, tienes la configuración de mapping mediante XML, programatica y anotaciones.
Creo que en el ejemplo de implementación cubro todas, no dudéis en entrar y echarle un vistazo a la implementación, ejecutando los test para ver su comportamiento.
IMPLEMENTACIÓN
private void buildDozerConfiguration() {
this.dozerBeanMapper = new DozerBeanMapper();
this.dozerBeanMapper.setMappingFiles(Collections.singletonList("dozerJdk8Converters.xml"));
final List<String> mappingFiles = new ArrayList<>();
mappingFiles.add("dozerJdk8Converters.xml");
mappingFiles.add("mappingDozer.xml");
this.dozerBeanMapper.setMappingFiles(mappingFiles);
}
Me podría poner ha explicar con detalle, como configurar y que posibilidades tenéis con Dozer, pero que mejor que un ejemplo en github, con la mayoría de casos cubiertos. Aunque, si creeis que falta alguno, comentar y añadiré encantado ese caso.