(autore originale di Selma in modo lieve diverso punto di vista)
Selma e MapStruct fa lo stesso lavoro con alcune differenze. Per prima cosa sembra che il codice generato da Selma sia leggermente più veloce di MapStruct (http://javaetmoi.com/wp-content/uploads/2015/09/2015-09-mapping-objet-objet2.png). Il numero di versione 0.13 non riflette realmente la maturità del codice. Selma è stabile e robusto è in uso in produzione per 2 anni.
L'idea principale di Selma è di proibire la conversione magica e semplicemente automatizzare tutti i mapping senza effetti collaterali. Quando la mappatura sembra essere troppo complessa, lo sviluppatore dovrebbe gestirlo da solo usando mappature o intercettori personalizzati.
L'ingombro di Selma è costruito per essere il più piccolo possibile, dipendendo solo da JavaWriter e JDK.
Selma tenta di utilizzare solo codice generato compilato statico senza alcuna riflessione in runtime o pseudo-codice scritto nei campi stringa.
È possibile utilizzare la composizione per creare una catena di mapper e all'interno di un singolo mappatore è possibile avere una configurazione globale che può essere sovrascritta per metodo.
I messaggi del compilatore sono progettati per fornire agli sviluppatori un feedback tempestivo, suggerimenti per risolvere il problema e imparare l'API.
Alla fine, sicuramente MapStruct è più ricco di funzionalità, ma Selma offre agli sviluppatori tutti gli strumenti necessari per la mappatura complessa con la responsabilità di scrivere la logica di business. Potresti anche trovare una delle 2 API più belle rispetto alle altre dal punto di vista dell'utente, quindi la cosa migliore da fare è provare entrambi e scegliere quello con cui ti senti più a tuo agio. Non richiederà molto tempo.
Elenco correlato di mapper: https://stackoverflow.com/questions/1432764/new-tool-for-java-object-to-object-mapping – tkruse