web-dev-qa-db-de.com

irgendein Werkzeug für Java Objekt-zu-Objekt-Zuordnung?

Ich versuche, DO mit Java) in DTO umzuwandeln und suche nach einem automatisierten Tool, bevor ich mein eigenes schreibe. Ich wollte nur wissen, ob es dafür ein kostenloses Tool gibt.

221
ravinikam

Sie könnten versuchen Bulldozer .

Dozer ist ein Bean-to-Bean-Mapper von JavaJava, der rekursiv Daten von einem Objekt in ein anderes kopiert. In der Regel handelt es sich bei diesen Java Beans um verschiedene komplexe Typen.

Dozer unterstützt einfache Eigenschaftenzuordnungen, komplexe Typzuordnungen, bidirektionale Zuordnungen, implizite explizite Zuordnungen sowie rekursive Zuordnungen. Dies umfasst das Zuordnen von Auflistungsattributen, die auch auf Elementebene zugeordnet werden müssen.

105
skaffman

Dort gibt es einige Bibliotheken:

  • Commons-BeanUtils : ConvertUtils -> Dienstprogrammmethoden zum Konvertieren von String-Skalarwerten in Objekte der angegebenen Klasse, String-Arrays in Arrays der angegebenen Klasse.

  • Commons-Lang : ArrayUtils -> Operationen auf Arrays, primitiven Arrays (wie int []) und primitiven Wrapper-Arrays (wie Integer []).

  • Spring-Framework : Spring bietet eine hervorragende Unterstützung für PropertyEditors, die auch zum Transformieren von Objekten in/aus Strings verwendet werden können.

  • Dozer : Dozer ist ein leistungsfähiger, aber einfacher Java Bean to Java Bean Mapper, von dem rekursiv Daten kopiert werden ein Objekt zum anderen. In der Regel handelt es sich bei diesen Java Beans um verschiedene komplexe Typen.

  • ModelMapper : ModelMapper ist ein intelligentes Objektzuordnungsframework, das Objekte automatisch einander zuordnet. Es verwendet einen auf Konventionen basierenden Ansatz zum Zuordnen von Objekten und bietet gleichzeitig eine einfache refactoring-sichere API für die Behandlung bestimmter Anwendungsfälle.

  • MapStruct : MapStruct ist ein Code-Generator zur Kompilierungszeit für Bean-Mappings, der schnell (keine Verwendung von Reflektion oder ähnlichem), ohne Abhängigkeit und ohne sicherer Mapping-Code zur Laufzeit.

  • Orika : Orika verwendet die Bytecode-Generierung, um schnelle Mapper mit minimalem Overhead zu erstellen.

  • Selma : Code-Generator zur Kompilierungszeit für Mappings

  • JMapper : Bean-Mapper-Generierung mit Annotation, XML oder API

  • Smooks : Mit der Smooks JavaBean Cartridge können Sie Java Objekte aus Ihren Nachrichtendaten erstellen und auffüllen (dh Daten binden an) (empfohlen) von superfilin in Kommentaren). (Nicht mehr in aktiver Entwicklung)

  • Commons-Convert : Mit Commons-Convert soll eine einzige Bibliothek bereitgestellt werden, die für die Konvertierung eines Objekts eines Typs in ein anderes vorgesehen ist. Die erste Phase konzentriert sich auf die Konvertierungen von Objekt zu String und von String zu Objekt. (scheint tot, letzte Aktualisierung 2010)

  • Transmorph : Transmorph ist eine freie Java Bibliothek, mit der ein Java Objekt eines Typs in ein Objekt konvertiert wird von einem anderen Typ (mit einer anderen Signatur, möglicherweise parametrisiert). (scheint tot, letzte Aktualisierung 2013)

  • EZMorph : EZMorph ist eine einfache Java Bibliothek zum Transformieren eines Objekts in ein anderes Objekt. Es unterstützt Transformationen für Primitive und Objekte, für mehrdimensionale Arrays und Transformationen mit DynaBeans (scheint tot, letzte Aktualisierung 2008)

  • Morph : Morph ist ein Java Framework, das die interne Interoperabilität einer Anwendung vereinfacht. Während Informationen durch eine Anwendung fließen, werden sie mehreren Transformationen unterzogen. Morph bietet eine Standardmethode zum Implementieren dieser Transformationen. (scheint tot, letzte Aktualisierung 2008)

  • Lorentz : Lorentz ist ein generisches Objekt-zu-Objekt-Konvertierungsframework. Es bietet eine einfache API, um Java Objekte eines Typs in ein Objekt eines anderen Typs zu konvertieren. (scheint tot zu sein)

  • [~ # ~] otom [~ # ~] : Mit OTOM können Sie beliebige Daten von einem beliebigen Objekt auf ein beliebiges anderes Objekt kopieren. Die Möglichkeiten sind endlos. Willkommen im "Herbst". (scheint tot zu sein)

376
Pascal Thivent

Ein anderer ist Orika - https://github.com/orika-mapper/orika

Orika ist ein Java Bean-Mapping-Framework, das (unter anderem) rekursiv Daten von einem Objekt auf ein anderes kopiert. Es kann sehr nützlich sein, wenn Sie mehrschichtige Anwendungen entwickeln.

Orika konzentriert sich darauf, so viel wie möglich zu automatisieren und bei Bedarf Anpassungen durch Konfiguration und Erweiterung vorzunehmen.

Orika ermöglicht dem Entwickler:

  • Komplexe und tief strukturierte Objekte abbilden
  • "Reduzieren" oder "Erweitern" von Objekten durch Zuordnen verschachtelter Eigenschaften zu Eigenschaften der obersten Ebene und umgekehrt
  • Erstellen Sie Mapper direkt und nehmen Sie Anpassungen vor, um einige oder alle Mappings zu steuern
  • Erstellen Sie Konverter, um die Zuordnung eines bestimmten Satzes von Objekten im gesamten Objektdiagramm zu steuern - nach Typ oder sogar nach einem bestimmten Eigenschaftsnamen
  • Behandeln von Proxys oder erweiterten Objekten (wie die von Hibernate oder die verschiedenen Mock-Frameworks)
  • Wenden Sie bidirektionale Zuordnung mit einer Konfiguration an
  • Ordnen Sie Instanzen einer geeigneten konkreten Klasse für eine abstrakte Zielklasse oder Schnittstelle zu
  • Verarbeiten Sie umgekehrte Zuordnungen
  • Komplexe Konventionen verarbeiten, die über die JavaBean-Spezifikationen hinausgehen.

Orika verwendet die Bytecode-Generierung, um schnelle Mapper mit minimalem Overhead zu erstellen.

31
Tomas

ModelMapper ist eine weitere Bibliothek, die einen Besuch wert ist. ModelMappers Design unterscheidet sich von anderen Bibliotheken darin, dass es:

  • Ordnet Objektmodelle automatisch zu, indem die Quell- und Zieleigenschaften intelligent abgeglichen werden
  • Stellt eine Refactoring-Safe-Mapping-API bereit, die den tatsächlichen Code verwendet, um Felder und Methoden zuzuordnen, anstatt Zeichenfolgen zu verwenden
  • Verwendet eine auf Konventionen basierende Konfiguration für die einfache Handhabung benutzerdefinierter Szenarien

Weitere Informationen finden Sie auf der ModelMapper-Website:

http://modelmapper.org

21
Jonathan

Verwenden Sie Apache Commons Beanutils:

static void copyProperties(Object dest, Object orig) -Kopiert Eigenschaftswerte von der Ursprungs-Bean bis zur Ziel-Bean für alle Fälle, in denen die Eigenschaftsnamen identisch sind.

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

13
Pablojim

Es gibt noch eine Java Mapping Engine/Framework Nomin: http://nomin.sourceforge.net .

6
Dmitry

Ich schlage vor, Sie versuchen JMapper Framework .

Es ist eine Java Bean zu Java Bean Mapper, mit dem Sie die Datenübergabe dynamisch mit Annotationen und/oder XML durchführen können.

Mit JMapper können Sie:

  • Erstellen und Anreichern von Zielobjekten
  • Wenden Sie eine bestimmte Logik auf das Mapping an
  • Verwalten Sie die XML-Datei automatisch
  • Implementieren Sie die Beziehungen 1 zu N und N zu 1
  • Implementieren Sie explizite Konvertierungen
  • Übernehmen Sie geerbte Konfigurationen
3
Alessandro

Ich bin froh, Moo als Option hinzuzufügen, obwohl ich eindeutig voreingenommen bin: http://geoffreywiseman.github.com/Moo/

Es ist sehr einfach für einfache Fälle zu verwenden, angemessen für komplexere Fälle, obwohl es noch einige Bereiche gibt, in denen ich mir vorstellen kann, es für noch mehr Komplexität zu verbessern.

2

Sie können auch versuchen, ein auf Dozer basierendes Zuordnungsframework zu verwenden, jedoch mit einer Excel-Zuordnungsdeklaration. Sie haben einige Tools und zusätzliche coole Funktionen. Überprüfen Sie unter http://openl-tablets.sf.net/mapper

2
Ivan