web-dev-qa-db-de.com

Java Zuordnung: Selma vs MapStruct

Derzeit gibt es zwei beliebte Java Object to Object Mapping Frameworks, die Dozer ( http://dozer.sourceforge.net/documentation/mappings.html ) ersetzen sind:

  1. Selma - http://www.selma-Java.org/
  2. MapStruct - http://mapstruct.org/

Mit Ausnahme dieser Seite ( http://vytas.io/blog/Java/java-object-to-object-mapping-which-framework-to-choose-part-2/ ) I Ich habe online nicht viel darüber herausgefunden, welches Framework besser ist als das andere oder unter welchen Umständen sie besser sind. Ich frage mich, ob jemand etwas Licht ins Dunkel bringen kann. In Bezug auf die auf den Dokumenten basierende Funktionalität scheinen sie dasselbe zu tun.

53
JackDev

(Originalautor von MapStruct hier, also bin ich natürlich voreingenommen)

Tatsächlich basieren beide Projekte auf der gleichen allgemeinen Idee, Mapping-Code zur Kompilierungszeit zu generieren. Ich empfehle Ihnen MapStruct aus folgenden Gründen:

  • Bewährte und stabile Codebasis: MapStruct ist die ältere der beiden und hat ursprünglich die Idee, ein Mapping zu generieren. Es wurde über einen längeren Zeitraum hinweg verbessert und poliert, basierend auf dem realen Feedback aus der Verwendung in vielen verschiedenen Projekten. Wir haben das stabile 1.0-Finale im letzten Jahr veröffentlicht
  • Größere Entwickler- und Benutzergemeinschaft je nach Anzahl der Committer ( MapStruct , Selma ) und Benutzerfragen ( MapStruct , Selma =)
  • Funktionsreich (Einige Dinge, die in MapStruct unterstützt werden, habe ich in den Selma-Dokumenten nicht (in gleichem Umfang) gefunden):
  • Eclipse-Plug-in verfügbar: Wird noch ausgeführt, aber seine Schnellkorrekturen und automatischen Vervollständigungen sind bereits beim Entwerfen von Mapper-Schnittstellen sehr hilfreich
  • IntelliJ-Plug-in : Hilft beim Bearbeiten von Mapper-Schnittstellen über die automatische Vervollständigung. Gehen Sie zu den angegebenen Eigenschaften, Refactoring-Unterstützung usw.
78
Gunnar

(Ursprünglicher Autor von Selma so geringfügig andere Sicht)

Selma und MapStruct erledigen den gleichen Job mit einigen Unterschieden. Zunächst scheint es, dass der von Selma generierte Code etwas schneller ist als MapStruct ( http://javaetmoi.com/wp-content/uploads/2015/09/2015-09-mapping-objet-objet2.png =). Die Versionsnummer 0.13 spiegelt nicht wirklich die Reife des Codes wider. Selma ist stabil und robust und wird seit 2 Jahren in der Produktion verwendet.

Die Hauptidee von Selma ist es, die Umwandlung von Magie zu verhindern und alle Zuordnungen ohne Nebenwirkungen zu automatisieren. Wenn das Mapping zu komplex erscheint, sollte der Entwickler es mit benutzerdefinierten Mappings oder Interceptor selbst handhaben.

Der Footprint von Selma ist so klein wie möglich. Wir sind nur auf einen JavaWriter und das JDK angewiesen.

Selma versucht, nur statisch kompilierten generierten Code ohne Reflektion zur Laufzeit oder Pseudocode zu verwenden, der in Zeichenfolgenfelder geschrieben ist.

Sie können Komposition verwenden, um eine Kette von Mappern zu erstellen, und in einem einzelnen Mapper können Sie eine globale Konfiguration haben, die pro Methode überschrieben werden kann.

Compiler-Meldungen sollen Entwicklern frühzeitig Feedback geben, Tipps zur Behebung des Problems geben und die API kennenlernen.

Sicher ist, dass MapStruct umfangreicher ist, aber Selma bietet Entwicklern alle Tools, die für komplexe Zuordnungen erforderlich sind, und ist für die Erstellung der Geschäftslogik verantwortlich. Sie könnten auch eine der beiden APIs aus Benutzersicht besser finden als die andere. Versuchen Sie also am besten beide und wählen Sie diejenige aus, mit der Sie sich wohler fühlen. Es wird nicht zeitaufwändig sein.

77
slemesle