web-dev-qa-db-fra.com

un outil pour Java mappage objet à objet?

J'essaie de convertir DO en DTO en utilisant Java et je cherche un outil automatisé avant de commencer à écrire le mien. Je voulais juste savoir s'il y avait un outil gratuit disponible pour la même chose.

221
ravinikam

Vous pouvez essayer Dozer .

Dozer est un Java Bean en Java Bean mapper qui copie de manière récursive des données d'un objet à un autre. En règle générale, ces Java Beans seront de types complexes différents.

Dozer prend en charge le mappage simple de propriétés, le mappage de types complexes, le mappage bidirectionnel, le mappage implicite-explicite, ainsi que le mappage récursif. Cela inclut les attributs de collection de mappage qui nécessitent également un mappage au niveau de l'élément.

105
skaffman

Il y a des bibliothèques dans les environs:

  • Commons-BeanUtils : ConvertUtils -> Méthodes utilitaires pour convertir les valeurs scalaires String en objets de la classe spécifiée, Tableaux de chaînes en tableaux de la classe spécifiée.

  • Commons-Lang : ArrayUtils -> Opérations sur les tableaux, les tableaux primitifs (comme int []) et les tableaux primitifs (comme Integer []).

  • Framework Spring : Spring supporte très bien PropertyEditors, qui peut également être utilisé pour transformer des objets en/à partir de chaînes.

  • Dozer : Dozer est un bean Java à la fois simple et puissant en Java qui copie récursivement des données à partir de un objet à un autre. En règle générale, ces Java Beans seront de types complexes différents.

  • ModelMapper : ModelMapper est un cadre de mappage d'objet intelligent qui mappe automatiquement les objets entre eux. Il utilise une approche conventionnelle pour mapper des objets tout en fournissant une simple API sécurisée de refactoring permettant de gérer des cas d'utilisation spécifiques.

  • MapStruct : MapStruct est un générateur de code au moment de la compilation pour les mappages de beans, générant rapide (pas d'utilisation de la réflexion ou similaire), sans dépendance et type code de mappage sécurisé au moment de l'exécution.

  • Orika : Orika utilise la génération de code octet pour créer des mappeurs rapides avec une surcharge minimale.

  • Selma : Générateur de code au moment de la compilation pour les mappages

  • JMapper : génération de mappeurs de beans utilisant Annotation, XML ou API

  • Smooks : la cartouche Smooks JavaBean vous permet de créer et de peupler des objets Java à partir de vos données de message (c.-à-d. Lier des données à). par superfilin dans les commentaires). (N'est plus en développement actif)

  • Commons-Convert : Commons-Convert a pour objectif de fournir une seule bibliothèque dédiée à la conversion d'un objet d'un type à un autre. La première étape portera sur les conversions d'objet à chaîne et de chaîne à objet. (semble mort, dernière mise à jour 2010)

  • Transmorph : Transmorph est une bibliothèque libre Java utilisée pour convertir un objet Java d'un type en objet. d'un autre type (avec une autre signature, éventuellement paramétrée). (semble mort, dernière mise à jour 2013)

  • EZMorph : EZMorph est une simple bibliothèque Java permettant de transformer un objet en un autre. Il prend en charge les transformations pour les primitives et les objets, pour les tableaux multidimensionnels et les transformations avec DynaBeans (semble mort, dernière mise à jour 2008)

  • Morph : Morph est un framework Java facilitant l'interopérabilité interne d'une application. Lorsque l’information circule dans une application, elle subit de multiples transformations. Morph fournit un moyen standard d'implémenter ces transformations. (semble mort, dernière mise à jour 2008)

  • Lorentz : Lorentz est un cadre de conversion générique d’objet à objet. Il fournit une API simple pour convertir un objet Java d'un type en un objet d'un autre type. (semble mort)

  • OTOM : Avec OTOM, vous pouvez copier toutes les données d'un objet vers un autre. Les possibilités sont infinies. Bienvenue à "Automne". (semble mort)

376
Pascal Thivent

Un autre est Orika - https://github.com/orika-mapper/orika

Orika est un cadre de mappage de beans Java qui copie de manière récursive (entre autres fonctionnalités) des données d'un objet à un autre. Cela peut être très utile lors du développement d'applications multicouches.

Orika se concentre sur l'automatisation autant que possible, tout en offrant une personnalisation par le biais de la configuration et de l'extension, le cas échéant.

Orika permet au développeur de:

  • Cartographier des objets complexes et profondément structurés
  • "Aplatir" ou "développer" les objets en mappant les propriétés imbriquées aux propriétés de niveau supérieur, et inversement
  • Créer des mappeurs à la volée et appliquer des personnalisations pour contrôler tout ou partie du mappage
  • Créez des convertisseurs pour un contrôle complet sur le mappage d'un ensemble d'objets spécifique n'importe où dans le graphe d'objets - par type ou même par nom de propriété spécifique
  • Manipuler des proxies ou des objets améliorés (comme ceux d'Hibernate ou les divers frameworks fictifs)
  • Appliquer un mappage bidirectionnel avec une configuration
  • Mapper vers des instances d'une classe concrète appropriée pour une classe abstraite ou une interface cible
  • Gestion des mappages inverses
  • Gérez des conventions complexes au-delà des spécifications JavaBean.

Orika utilise la génération de code octet pour créer des mappeurs rapides avec une surcharge minimale.

31
Tomas

ModelMapper est une autre bibliothèque à découvrir. La conception de ModelMapper diffère des autres bibliothèques en ce qu'elle:

  • Mappe automatiquement les modèles d'objet en faisant correspondre intelligemment les propriétés de source et de destination
  • Fournit une API de mappage sûre pour le refactoring qui utilise le code réel pour mapper les champs et les méthodes plutôt que d'utiliser des chaînes
  • Utilise une configuration basée sur des conventions pour une gestion simple de scénarios personnalisés

Consultez le site ModelMapper pour plus d'informations:

http://modelmapper.org

21
Jonathan

Utilisez les beanutils Apache commons:

static void copyProperties(Object dest, Object orig) -Copiez les valeurs de propriété du bean d'origine vers le bean de destination pour tous les cas où les noms de propriété sont identiques.

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

13
Pablojim

Il existe un autre Java moteur/cadre de cartographie Nomin: http://nomin.sourceforge.net .

6
Dmitry

Je vous suggère d'essayer JMapper Framework .

Il s'agit d'un mappeur de bean Java à Java, qui vous permet d'effectuer le passage de données de manière dynamique avec des annotations et/ou XML.

Avec JMapper, vous pouvez:

  • Créer et enrichir des objets cibles
  • Appliquer une logique spécifique au mappage
  • Gérer automatiquement le fichier XML
  • Implémenter les relations 1 à N et N à 1
  • Implémenter des conversions explicites
  • Appliquer les configurations héritées
3
Alessandro

Je suis heureux d'ajouter Moo comme option, bien que je sois clairement partisan de cette idée: http://geoffreywiseman.github.com/Moo/

Il est très facile à utiliser pour des cas simples, raisonnablement capable pour des cas plus complexes, même s'il existe encore des domaines dans lesquels je peux imaginer l'améliorer encore davantage.

2
Geoffrey Wiseman

Vous pouvez également essayer une structure de mappage basée sur Dozer, mais avec une déclaration de mappage Excel. Ils ont des outils et des fonctionnalités intéressantes supplémentaires. Vérifiez sur http://openl-tablets.sf.net/mapper

2
Ivan