Estoy tratando de convertir a HACER para DTO uso de java y buscando una herramienta automatizada antes de empezar a escribir mi propia. Yo sólo quería saber si hay alguna herramienta gratuita disponible para el mismo.

  • Jackson (el JSON de la biblioteca) tiene un método new ObjectMapper().convertValue(...). Jackson también tiene soporte para anotaciones y anotación-mixins me parece una muy buena opción.
  • Aquí está un artículo con diferentes marcos y comparación de rendimiento. baeldung.com/java-performance-mapping-frameworks
InformationsquelleAutor ravinikam | 2009-09-16

9 Comentarios

  1. 105

    Usted podría tratar de Dozer.

    Bulldozer es un Java Bean de Java Bean
    asignador de que la copia recursivamente datos
    de un objeto a otro. Normalmente,
    estos Beans de Java serán de diferentes
    los tipos complejos.

    Dozer admite simple de la propiedad
    la asignación, el tipo de complejo de asignación,
    bi-direccional de asignación,
    implícito-explícito de asignación, así como
    recursiva de asignación. Esto incluye
    la asignación de la colección de atributos que
    también se necesita la asignación en el elemento
    nivel.

    • Un muy, muy largo tiempo después, vengo a hacer una actualización, espero que mi comentario será leído : Ahora Dozer parece ser un muerto, y una buena opción es utilizar MapStruct, es fácil (anotaciones de apoyo), rápido (sin reflexión) y parece seguro (por el momento). Esto está incluido en el @Pascal Thivent lista a pesar de, pero yo aconsejo (aunque he tenido algunos problemas por su uso junto con lombok).
    • Dozer parece revivió con la versión 6: mvnrepository.com/artifact/com.github.dozermapper/dozer-core
  2. 377

    Hay algunas bibliotecas de todo hay:

    • Commons-BeanUtils: ConvertUtils -> métodos de Utilidad para la conversión de la Cadena de valores escalares de los objetos de la Clase especificada, Cadena de matrices las matrices de la Clase especificada.

    • Commons-Lang: ArrayUtils -> Operaciones con matrices, matrices primitivas (como int[]) y primitiva de contenedor de matrices (como Integer[]).

    • Framework Spring: Primavera tiene un excelente soporte para la PropertyEditors, que también puede ser utilizado para transformar los Objetos a/de Cadenas.

    • Dozer: Bulldozer es un potente, pero fácil de Java Bean de Java Bean mapper que de forma recursiva copias de los datos de un objeto a otro. Normalmente, estos Beans de Java serán de diferentes tipos complejos.

    • ModelMapper: ModelMapper es un objeto inteligente de asignación de marco que asigna automáticamente los objetos el uno al otro. Utiliza una convención de un enfoque basado en los objetos del mapa, mientras que proporciona un simple refactorización seguro de la API para el manejo de casos de uso específicos.

    • MapStruct: MapStruct es tiempo de compilación generador de código de frijol asignaciones, lo que resulta en un rápido (el uso de la reflexión o similar), dependencia y tipo de seguro de asignación de código en tiempo de ejecución.

    • Orika: Orika utiliza el byte de generación de código para crear rápida mappers con una sobrecarga mínima.

    • Selma: En tiempo de compilación generador de código para las asignaciones de

    • JMapper: Bean asignador de generación mediante Anotación, XML o de la API de

    • Smooks: El Smooks JavaBean Cartucho permite crear y rellenar objetos Java de su mensaje de datos (es decir, enlazar datos a) (sugerido por superfilin en los comentarios). (ya No está bajo desarrollo activo)

    • Commons-Convertir: Commons-Convertir tiene como objetivo proporcionar una sola biblioteca dedicada a la tarea de convertir un objeto de un tipo a otro. La primera etapa se centrará en el Objeto a Cadena y la Cadena al Objeto de conversiones. (parece muerto, la última actualización de 2010)

    • Transmorph: Transmorph es un servicio gratuito de biblioteca de java se utiliza para convertir un objeto Java de un tipo en un objeto de otro tipo (con otra firma, posiblemente con parámetros). (que parece muerto, la última actualización 2013)

    • EZMorph: EZMorph es simple biblioteca de java para la transformación de un Objeto a otro Objeto. Es compatible con las transformaciones de tipos primitivos y Objetos, para matrices multidimensionales y transformaciones con DynaBeans (que parece muerto, última actualización 2008)

    • Morph: Morph es un marco de Java que facilita la interoperabilidad interna de una aplicación. Como los flujos de información a través de una aplicación, se somete a múltiples transformaciones. Morph proporciona una manera estándar para implementar estas transformaciones. (que parece muerto, última actualización 2008)

    • Lorentz: Lorentz es un objeto genérico-a-objeto de la conversión de marco. Proporciona una API simple para convertir un Java los objetos de un tipo en un objeto de otro tipo. (que parece muerto)

    • OTOM: Con OTOM, puede copiar datos de cualquier objeto a cualquier otro objeto. Las posibilidades son infinitas. Bienvenidos a «el Otoño». (que parece muerto)

    • ninguno de la lista admite la anotación 🙁
    • Commons-Convertir parece no sólo latente, pero completamente desaparecido …
    • En realidad, si quieres añadir Moo a su lista, entonces me puede quitar mi respuesta, ya que su respuesta es claramente mucho más completa. 😉
    • Dozer admite la anotación desde la versión 5.3.2 (no cuando escribió su comentario, pero es bueno saber de personas que están buscando esta respuesta).
    • Una más de las opciones es jtransfo.org. esto le permite definir el mapeo de uso de anotaciones en el PARA. Tiene la característica adicional de permitir la conversión opcional de campos en función de las etiquetas que se han pasado al hacer la conversión.
    • Gracias. Pero sería aún más útil si esta respuesta fue dividida en varias único marco respuestas. En ese caso, los votos mostraría su actual popularidad.
    • Otra opción para Java 8+: erchu.github.io/bean-cp (descargo de responsabilidad: yo soy el autor de este proyecto)
    • No considerar Smooks ya que es itroducing más problemas. Como puedo ver es que no se en vías de desarrollo, también no tiene el apoyo de la 3ª parte de marcos (como JodaTime). El manejo de excepciones es espantoso y no proporciona significativo explicaciones. Es casi imposible encontrar soluciones simples para sus problemas (se ve como desarrollador no la uso mucho)
    • Otro para añadir a la lista de github.com/amgohan/zebra : DIY objetos de asignación y uso de cebra de forma unificada para inyectar miembros de la comunidad. por el bien de rendimiento, hacer objetos asignar manualmente y no sabes cómo organizar tu mappers. Zebra viene con un simple y unificada de la manera siguiente : – crear su mappers – gestionar de una manera y asignación inversa de una clase a registrar los mappers y reutilizar cualquier parte de la aplicación – gestionar la asignación de profundidad
    • Otra opción es jTransfo (jtransfo.org). jTransfo utiliza anotaciones en el DTO objetos. Tiene una buena integración con Spring Framework, CDI y de Hibernación. También tiene algunas características específicas que pueden ayudar para la seguridad. Véase también: parleys.com/tutorial/…
    • Hecho y he editado la respuesta a quitar a la huelga y de referencia de la repo de URL (desde la página principal referencias 0.7.5)

  3. 31

    Otro es Orika – https://github.com/orika-mapper/orika

    Orika es un Java Bean asignación de marco que copia recursivamente (entre otras funciones) de los datos de un objeto a otro. Puede ser muy útil en el desarrollo de múltiples capas de aplicaciones.

    Orika se centra en la automatización en la medida de lo posible, mientras que proporciona a través de la personalización de la configuración y extensión en que sea necesario.

    Orika permite al desarrollador :

    • Mapa complejo y profundamente estructurado de objetos
    • «Aplastar» o «Ampliar» los objetos mediante la asignación de propiedades anidadas al más alto nivel de propiedades, y viceversa
    • Crear mapeados sobre la marcha, y aplicar las personalizaciones a controlar algunos o todos de la asignación de
    • Crear convertidores para el control completo sobre la asignación de un conjunto específico de objetos en cualquier lugar del objeto gráfico–por tipo, o incluso por la propiedad específica nombre
    • Manejar los apoderados o mejorados de objetos (como los de Hibernación, o en los diferentes simulacros de marcos)
    • Aplicar bi-direccional de asignación con una configuración
    • Mapa a instancias de una clase concreta para un objetivo abstracto de la clase o interfaz de
    • Manejar inversa asignaciones
    • Manejar el complejo de convenciones más allá de JavaBean especificaciones.

    Orika utiliza el byte de generación de código para crear rápida mappers con una sobrecarga mínima.

    • usted puede proporcionar un par de palabras acerca de orika, lo que la hace diferente de las demás
    • Es, probablemente, mucho más rápido que los Cargadores – bulldozer es tranquilo lento.
  4. 21

    ModelMapper es otra biblioteca digno de la comprobación hacia fuera. ModelMapper del diseño es diferente de otras bibliotecas, en la que:

    • Automáticamente mapas de modelos de objetos de forma inteligente la coincidencia de origen y de destino de las propiedades de
    • Proporciona una refactorización seguro de asignación de API que utiliza el código real de un mapa de campos y métodos en lugar de utilizar las cadenas de
    • Utiliza la convención sobre la base de la configuración para manejo simple de escenarios personalizados

    Retirar el ModelMapper sitio para más info:

    http://modelmapper.org

  5. 13

    Uso de Apache commons beanutils:

    static void copyProperties(Object dest, Object orig)
    -Copiar los valores de propiedad de el origen de frijol para el destino de frijol para todos
    los casos en los que la propiedad de los nombres son los
    mismo.

    http://commons.apache.org/proper/commons-beanutils/

    • yeh,pero las propiedades que están en el origen de frijol, pero no en el destino de frijol son simplemente ignorados. Gracias de todos modos Pablojim 🙂 creo que tengo que ir con Topadora ya tenemos algunos nombres de propiedades diferentes para HACER y DTO 🙁
    • Justo lo suficiente – yo no sé… de Pascal lista era bastante impresionante!
  6. 3

    Le sugiero que pruebe JMapper Marco.

    Es un Java bean de Java bean mapper, le permite realizar el pasaje de datos de forma dinámica, con anotaciones y /o XML.

    Con JMapper usted puede:

    • Crear y enriquecer los objetos de destino de
    • Aplicar una lógica específica para la asignación de
    • Administrar automáticamente el archivo XML
    • Aplicar de 1 a N y N a 1 relaciones
    • Implementar las conversiones explícitas
    • Aplicar heredado configuraciones
  7. 2

    Me alegra agregar Moo como una opción, a pesar de que claramente estoy sesgado hacia ella:
    http://geoffreywiseman.github.com/Moo/

    Es muy fácil de utilizar para los casos más sencillos, razonable, capaz para los casos más complejos, aunque todavía hay algunas áreas donde la puedo imaginar que mejora incluso más complejidades.

Dejar respuesta

Please enter your comment!
Please enter your name here