web-dev-qa-db-fra.com

Java mappage: Selma vs MapStruct

Actuellement, il existe deux principaux cadres de mappage populaires Java Objet à objet qui remplacent Dozer ( http://dozer.sourceforge.net/documentation/mappings.html )). sont:

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

À l'exception de cette page ( http://vytas.io/blog/Java/java-object-to-object-mapping-which-framework-to-choose-part-2/ ) I n'ont pas été en mesure de trouver beaucoup d'informations en ligne sur les cadres qui sont meilleurs que les autres ou dans quelles circonstances ils sont meilleurs. Vous vous demandez si vous pouvez nous éclairer à ce sujet. En termes de fonctionnalités basées sur les documents, ils semblent faire la même chose.

53
JackDev

(Auteur original de MapStruct ici, donc naturellement, je suis partial)

En effet, les deux projets sont basés sur la même idée générale de générer un code de mappage au moment de la compilation; Je vous recommande MapStruct pour les raisons suivantes:

  • Base de code éprouvée et stable: MapStruct est le plus ancien des deux et a eu l’idée originale de générer une cartographie. Il a été amélioré et perfectionné sur une période assez longue, sur la base de retours d'expérience réels issus de l'utilisation de nombreux projets différents; Nous avons publié la version stable 1.0 finale l'année dernière
  • Plus grande communauté de développeurs et d'utilisateurs selon le nombre de committers ( MapStruct , Selma ) et les questions des utilisateurs ( MapStruct , Selma )
  • Riche en fonctionnalités (certaines choses prises en charge dans MapStruct que je n'ai pas trouvées (dans la même mesure) dans la documentation Selma):
  • Eclipse plug-in disponible: travail en cours, mais ses correctifs rapides et sa complétion automatique sont déjà très utiles lors de la conception d'interfaces de mappeurs
  • IntelliJ plug-in : aide lors de la modification des interfaces de mappeur via l'auto-complétion, l'accès aux propriétés référencées, la prise en charge du refactoring, etc.
78
Gunnar

(Auteur original de Selma si léger point de vue différent)

Selma et MapStruct font le même travail avec quelques différences. Tout d’abord, il semble que le code généré par Selma soit juste un peu plus rapide que MapStruct ( http://javaetmoi.com/wp-content/uploads/2015/09/2015-09-mapping-objet-objet2.png =). Le numéro de version 0.13 ne reflète pas vraiment la maturité du code. Selma est stable et robuste; il est utilisé en production depuis 2 ans.

L'idée principale derrière Selma est d'interdire la conversion magique et d'automatiser simplement tous les mappages sans aucun effet secondaire. Lorsque le mappage semble trop complexe, le développeur doit le gérer lui-même en utilisant des mappages personnalisés ou un intercepteur.

L'empreinte de Selma est conçue pour être aussi petite que possible. Nous ne dépendons que de JavaWriter et du JDK.

Selma essaie d'utiliser uniquement du code généré compilé statique sans aucune réflexion au moment de l'exécution ni de pseudo-code écrit dans des champs de chaîne.

Vous pouvez utiliser la composition pour créer une chaîne de mappeurs. À l'intérieur d'un mappeur unique, vous pouvez avoir une configuration globale qui peut être écrasée méthode par méthode.

Les messages du compilateur sont conçus pour donner aux développeurs une première réaction, des astuces pour résoudre le problème et apprendre l'API.

À la fin, certes, MapStruct est plus riche en fonctionnalités, mais Selma fournit aux développeurs tous les outils nécessaires pour un mappage complexe avec la responsabilité d’écrire la logique d’entreprise. Vous pouvez également trouver l'une des 2 API plus agréable que l'autre du point de vue de l'utilisateur. La meilleure chose à faire est donc d'essayer les deux et de choisir celle avec laquelle vous vous sentez le plus à l'aise. Cela ne prendra pas de temps.

77
slemesle