2009-11-25 16 views
17

Estoy tratando de encontrar una manera fácil de asignar DTO a entidades sin el código de la placa de la caldera. Mientras estaba pensando en usar dozer, parece requerir una gran cantidad de configuración xml. ¿Alguien ha visto una alternativa de dozer que usa una DSL para configurar la asignación de bean en Java puro?¿Alternativa al dozer para el mapeo de frijoles?

Idealmente Tengo la esperanza de encontrar un asignador de frijol que se inspira en la forma en que hace las cosas Guice.

+0

Otra opción sería http://jtransfo.org/. Esto permite que las asignaciones se definan usando anotaciones en el TO. Tiene la característica adicional de que puede tener conversiones de seguridad/opcionales basadas en etiquetas. –

+1

eche un vistazo a https://github.com/amgohan/zebra/: (mapeo de objetos DIY y use zebra para una forma unificada de inyectar mapeadores.) Zebra viene con una forma simple y unificada de: crear sus mapeadores; gestiona mapeo unidireccional y reverso en una clase; registre sus cartógrafos y vuelva a utilizarlos en cualquier lugar de su aplicación; gestionar el mapeo profundo. – amgohan

+0

Esta es una muy buena alternativa: http://modelmapper.org/ – cosbor11

Respuesta

9

Estaba buscando alternativas también.

Here es una muy buena cobertura de las diferentes opciones.

16

Mire Orika.

Orika es un marco de mapeo Java Bean que forma recursiva copias (entre otras capacidades) de datos de un objeto a otro. Puede ser muy útil cuando se desarrollan aplicaciones de varias capas.

+0

Orika hizo el trabajo por mí, manejó el mapeo de la colección sin mucho esfuerzo. Muy poderosa y utilizable biblioteca IMO. –

3

Desde mi punto de vista, la configuración o el código java para mapear algunas propiedades especiales siempre son necesarios.

Aquí quiero tomar un DO y DTO por ejemplo

DO:{ 
    id: "id", 
    name:"name", 
    doName1: "doName1", 
    nestedObj: { 
     id: "nestedObjId", 
     name: "nestedObjName" 
    } 
} 

DTO{ 
    id: "", 
    name: "", 
    name1: "" // for mapping doName1 in DO. 
    nestedId: "", //for DT.nestObj.id 
    nestedName: "", //for DT.nestObj.name 
} 

Para bulldozer o Orika ambos pueden coincidir automáticamente Identificación y la propiedad de nombres entre DO y DTO sin ningún código de configuración o java porque están con el mismos nombres de propiedad y tipos. Pero si quiere DO.doName1 < ---->DTO.name1 o DO.nestedObj.id < --->DTO.nestedId necesita hacer alguna configuración (a través de xml o java) para decirle a la herramienta de asignación que tiene la intención de hacer eso. Creo que para su caso de uso, Dozer, Orika y ModelMapper están bien. Pero para mí estoy cambiando mi proyecto de bulldozer a Orika para fines de rendimiento. Aunque Orika no es tan maduro como bulldozer, no es tan inteligente y me exige hacer mucho más trabajo para mantener mis configuraciones de mapeo personalizadas. Si su proyecto no se preocupa demasiado por el rendimiento, le recomendaré que use dozer, es muy fácil de usar y admite muchas funciones avanzadas. De lo contrario, si está comprando un alto rendimiento, le sugiero orika.