¿Alguna herramienta para el mapeo de objeto a objeto de Java? [cerrado]
Estoy intentando convertir DO a DTO usando Java y buscando una herramienta automatizada antes de comenzar a escribir la mía. Sólo quería saber si hay alguna herramienta gratuita disponible para lo mismo.
Hay algunas bibliotecas por ahí:
Commons-BeanUtils : ConvertUtils -> Métodos de utilidad para convertir valores escalares de cadenas en objetos de la clase especificada, matrices de cadenas en matrices de la clase especificada.
Commons-Lang : ArrayUtils -> Operaciones en matrices, matrices primitivas (como int[]) y matrices contenedoras primitivas (como Integer[]).
Marco Spring : Spring tiene un excelente soporte para PropertyEditors, que también se puede usar para transformar objetos hacia/desde cadenas.
Dozer : Dozer es un mapeador de Java Bean a Java Bean potente pero simple que copia recursivamente datos de un objeto a otro. Normalmente, estos Java Beans serán de diferentes tipos complejos.
ModelMapper : ModelMapper es un marco de mapeo de objetos inteligente que asigna automáticamente objetos entre sí. Utiliza un enfoque basado en convenciones para mapear objetos y al mismo tiempo proporciona una API segura de refactorización simple para manejar casos de uso específicos.
MapStruct : MapStruct es un generador de código en tiempo de compilación para asignaciones de beans, lo que da como resultado un código de asignación rápido (sin uso de reflexión o similar), sin dependencia y con seguridad de tipos en tiempo de ejecución.
Orika : Orika utiliza la generación de código de bytes para crear mapeadores rápidos con una sobrecarga mínima.
Selma : generador de código en tiempo de compilación para asignaciones
JMapper : generación de mapeador de beans usando anotación, XML o API(parece muerto, actualizado por última vez hace 2 años)Smooks : El cartucho Smooks JavaBean le permite crear y completar objetos Java a partir de los datos de su mensaje (es decir, vincular datos) (sugerido por superfilin en los comentarios).(Ya no está en desarrollo activo)Commons-Convert : Commons-Convert tiene como objetivo proporcionar una biblioteca única dedicada a la tarea de convertir un objeto de un tipo a otro. La primera etapa se centrará en las conversiones de objeto a cadena y de cadena a objeto. (parece muerto, última actualización 2010)Transmorph : Transmorph es una biblioteca Java gratuita que se utiliza para convertir un objeto Java de un tipo en un objeto de otro tipo (con otra firma, posiblemente parametrizada).(parece muerto, última actualización 2013)EZMorph : EZMorph es una biblioteca Java simple para transformar un objeto en otro objeto. Admite transformaciones para primitivas y objetos, para matrices multidimensionales y transformaciones con DynaBeans(parece muerto, última actualización en 2008)Morph : Morph es un marco Java que facilita la interoperabilidad interna de una aplicación. A medida que la información fluye a través de una aplicación, sufre múltiples transformaciones. Morph proporciona una forma estándar de implementar estas transformaciones.(parece muerto, última actualización 2008)Lorentz : Lorentz es un marco genérico de conversión de objeto a objeto. Proporciona una API simple para convertir objetos Java de un tipo en un objeto de otro tipo.(parece muerto)OTOM : Con OTOM, puede copiar cualquier dato de cualquier objeto a cualquier otro objeto. Las posibilidades son infinitas. Bienvenidos al "Otoño".(parece muerto)
Podrías probar con Dozer .
Dozer es un asignador de Java Bean a Java Bean que copia recursivamente datos de un objeto a otro. Normalmente, estos Java Beans serán de diferentes tipos complejos.
Dozer admite mapeo de propiedades simples, mapeo de tipos complejos, mapeo bidireccional, mapeo implícito-explícito y mapeo recursivo. Esto incluye atributos de colección de mapeo que también necesitan mapeo a nivel de elemento.
Otro es Orika: https://github.com/orika-mapper/orika
Orika es un marco de mapeo de Java Bean que copia recursivamente (entre otras capacidades) datos de un objeto a otro. Puede resultar muy útil a la hora de desarrollar aplicaciones multicapa.
Orika se enfoca en automatizar tanto como sea posible, al mismo tiempo que brinda personalización mediante configuración y extensión cuando sea necesario.
Orika permite al desarrollador:
- Mapear objetos complejos y profundamente estructurados.
- "Aplanar" o "expandir" objetos asignando propiedades anidadas a propiedades de nivel superior y viceversa
- Cree mapeadores sobre la marcha y aplique personalizaciones para controlar parte o la totalidad del mapeo.
- Cree convertidores para un control total sobre la asignación de un conjunto específico de objetos en cualquier parte del gráfico de objetos, por tipo o incluso por nombre de propiedad específico.
- Manejar proxies u objetos mejorados (como los de Hibernate o los diversos marcos simulados)
- Aplicar mapeo bidireccional con una configuración
- Asignar a instancias de una clase concreta apropiada para una clase o interfaz abstracta de destino
- Manejar asignaciones inversas
- Maneje convenciones complejas más allá de las especificaciones de JavaBean.
Orika utiliza la generación de código de bytes para crear mapeadores rápidos con una sobrecarga mínima.
My ModelMapper es otra biblioteca que vale la pena consultar. El diseño de ModelMapper se diferencia de otras bibliotecas en que:
- Asigna automáticamente modelos de objetos haciendo coincidir de forma inteligente las propiedades de origen y destino.
- Proporciona una API de mapeo segura para refactorización que usa código real para mapear campos y métodos en lugar de usar cadenas.
- Utiliza configuración basada en convenciones para un manejo sencillo de escenarios personalizados.
Consulte el sitio ModelMapper para obtener más información:
http://modelmapper.org
Utilice los beanutils comunes de Apache:
static void copyProperties(Object dest, Object orig)
-Copie los valores de propiedad del bean de origen al bean de destino para todos los casos en los que los nombres de las propiedades sean los mismos.
http://commons.apache.org/proper/commons-beanutils/