現在、2つの主要な人気のあるJava Dozerに取って代わるオブジェクトからオブジェクトへのマッピングフレームワーク( http://dozer.sourceforge.net/documentation/mappings.html )、次のとおりです。
このページを除く( http://vytas.io/blog/Java/java-object-to-object-mapping-which-framework-to-choose-part-2/ )Iどのフレームワークが他のフレームワークよりも優れているか、またはどのような状況で優れているかについて、オンラインで見つけることができませんでした。誰かがこれに光を当てることができるかどうか疑問に思います。ドキュメントに基づく機能の面では、彼らは同じことをしているようです。
(MapStructの元の著者はここにいるので、当然私は偏っています)
実際、両方のプロジェクトは、コンパイル時にマッピングコードを生成するという同じ一般的な考え方に基づいています。次の理由から、MapStructをお勧めします。
JAXBElement
などのJAXB型の高度なサポートを含む、多くの組み込み 型変換(セルマの元の著者は非常にわずかな異なる視点)
SelmaとMapStructは、いくつかの違いはありますが同じ仕事をしています。最初に、Selmaで生成されたコードはMapStructよりも少し速いようです( http://javaetmoi.com/wp-content/uploads/2015/09/2015-09-mapping-objet-objet2.png =)。 0.13のリリース番号は、コードの成熟度を実際には反映していません。Selmaは安定して堅牢であり、2年間製品版で使用されています。
セルマの背後にある主なアイデアは、魔法の変換を禁止し、副作用なしですべてのマッピングを自動化することです。マッピングが複雑すぎるように見える場合、開発者はカスタムマッピングまたはインターセプターを使用して自分でマッピングを処理する必要があります。
Selmaのフットプリントは、JavaWriterとJDKにのみ依存するように、可能な限り小さくなるように構築されています。
Selmaは、実行時のリフレクションや文字列フィールドに記述された擬似コードなしで、静的にコンパイルされた生成コードのみを使用しようとします。
コンポジションを使用してマッパーのチェーンを構築し、単一のマッパー内でメソッドごとに上書きできるグローバル構成を使用できます。
コンパイラメッセージは、開発者に早期のフィードバック、問題を解決し、APIを学習するためのヒントを提供するために作成されています。
最後に、MapStructの機能が充実していることを確認しますが、Selmaは開発者に、ビジネスロジックを記述する責任を伴う複雑なマッピングに必要なすべてのツールを提供します。また、ユーザーの観点から2つのAPIの1つを見つけることができるため、両方を試して、より快適に感じるものを選択することをお勧めします。時間はかかりません。