Javaオブジェクトからオブジェクトへのマッピングのためのツールはありますか? [閉まっている]
質問
Javaを使用してDOをDTOに変換し、独自の記述を開始する前に自動化ツールを探しています。同じツールが利用できるかどうか知りたいだけです。
解決
Dozer を試すことができます。
DozerはJava BeanからJava Beanへ データを再帰的にコピーするマッパー あるオブジェクトから別のオブジェクトへ。通常、 これらのJava Beanは異なります 複合型。
Dozerは単純なプロパティをサポートします マッピング、複合型マッピング、 双方向マッピング、 暗黙的-明示的マッピング、および 再帰的マッピング。これも コレクション属性のマッピング 要素でのマッピングも必要です レベル。
他のヒント
周辺にはいくつかのライブラリがあります:
-
Commons-BeanUtils :ConvertUtils->文字列スカラー値を指定されたクラスのオブジェクトに、文字列配列を指定されたクラスの配列に変換するユーティリティメソッド。
-
Commons-Lang :ArrayUtils->配列、プリミティブ配列(int []など)、およびプリミティブラッパー配列(Integer []など)に対する操作。
-
Springフレームワーク:SpringはPropertyEditorsに対する優れたサポートを備えており、Objectの変換にも使用できます。 / from Strings。
-
Dozer :Dozerは、強力でありながらシンプルなJava BeanからJava Beanへのマッパーです。あるオブジェクトから別のオブジェクトにデータを再帰的にコピーします。通常、これらのJava Beanはさまざまな複合型になります。
-
ModelMapper :ModelMapperは、オブジェクトを互いに自動的にマッピングするインテリジェントなオブジェクトマッピングフレームワークです。特定のユースケースを処理するためのシンプルなリファクタリングの安全なAPIを提供しながら、コンベンションベースのアプローチを使用してオブジェクトをマップします。
-
MapStruct :MapStructは、Beanマッピング用のコンパイル時コードジェネレーターであり、高速(使用なし)リフレクションなど)、実行時の依存関係のないタイプセーフなマッピングコード。
-
オリカ:Orikaはバイトコード生成を使用して、オーバーヘッドを最小限に抑えた高速マッパーを作成します。
-
Selma :マッピング用のコンパイル時コードジェネレーター
-
JMapper :注釈、XML、またはAPIを使用したBeanマッパーの生成
-
Smooks :Smooks JavaBeanカートリッジを使用すると、Javaオブジェクトを作成して、メッセージデータ(つまり、データのバインド)(コメント内の superfilin で推奨)。(アクティブではなくなった開発) -
Commons-Convert :Commons-Convertは、あるタイプのオブジェクトを別のタイプに変換するタスク専用の単一ライブラリ。最初の段階では、オブジェクトから文字列への変換と文字列からオブジェクトへの変換に焦点を当てます。 (死んでいるようです、最終更新2010) -
Transmorph :Transmorphは、Javaオブジェクトの変換に使用される無料のJavaライブラリです。あるタイプから別のタイプのオブジェクトへの変換(別の署名、おそらくパラメーター化されたもの)。(死んだようです、2013年最終更新) -
EZMorph :EZMorphは、オブジェクトを別のオブジェクトに変換するためのシンプルなJavaライブラリです。オブジェクト。プリミティブとオブジェクトの変換、多次元配列とDynaBeansによる変換をサポートしています(死んだようです、最終更新2008年) -
モーフ:モーフは、アプリケーションの内部相互運用性を容易にするJavaフレームワークです。 。情報がアプリケーションを流れると、複数の変換が行われます。 Morphは、これらの変換を実装する標準的な方法を提供します。(死んでいるようです、最終更新2008年) -
Lorentz :Lorentzは汎用オブジェクトです
もう1つはOrikaです- https://github.com/orika-mapper/orika
Orikaは、1つのオブジェクトから別のオブジェクトに(他の機能の中でも)再帰的にデータをコピーするJava Beanマッピングフレームワークです。多層アプリケーションを開発するときに非常に役立ちます。
Orikaは、可能な限り自動化に焦点を合わせながら、必要に応じて構成と拡張を介してカスタマイズを提供しています。
Orikaを使用すると、開発者は次のことができます。
- 複雑で深く構造化されたオブジェクトをマップする
- "フラットン"または" Expand"ネストされたプロパティをトップレベルのプロパティにマッピングすることによるオブジェクト、およびその逆
- オンザフライでマッパーを作成し、マッピングの一部またはすべてを制御するカスタマイズを適用します
- オブジェクトグラフ内の任意の場所にあるオブジェクトの特定のセットのマッピングを完全に制御するためのコンバーターを作成します。タイプごと、または特定のプロパティ名ごとに
- プロキシまたは拡張オブジェクト(Hibernateやさまざまなモックフレームワークのオブジェクトなど)を処理します
- 1つの構成で双方向マッピングを適用する
- ターゲットの抽象クラスまたはインターフェースの適切な具象クラスのインスタンスへのマップ
- 逆マッピングの処理
- JavaBean仕様を超えた複雑な規約を処理します。
Orikaはバイトコード生成を使用して、オーバーヘッドを最小限に抑えた高速マッパーを作成します。
ModelMapper もチェックする価値のあるライブラリです。 ModelMapperの設計は、他のライブラリとは次の点で異なります。
- ソースプロパティとデスティネーションプロパティをインテリジェントに照合することにより、オブジェクトモデルを自動的にマッピングします
- 文字列を使用するのではなく、実際のコードを使用してフィールドとメソッドをマップするリファクタリングの安全なマッピングAPIを提供します
- カスタムシナリオを簡単に処理するために、コンベンションベースの構成を利用します
詳細については、ModelMapperサイトをご覧ください:
Apache commons beanutilsを使用:
static void copyProperties(Object dest、Object orig)
-すべてのプロパティ値を起点Beanから宛先Beanにコピーする プロパティ名が 同じ。
Javaマッピングエンジン/フレームワークNominがもう1つあります: http://nomin.sourceforge.net 。
JMapperフレームワークを試すことをお勧めします。
これは、Java BeanからJava Beanへのマッパーであり、注釈やXMLを使用してデータの受け渡しを動的に実行できます。
JMapperでできること:
- ターゲットオブジェクトの作成と強化
- 特定のロジックをマッピングに適用する
- XMLファイルの自動管理
- 1対NおよびN対1の関係を実装する
- 明示的な変換の実装
- 継承された構成を適用する
Mooをオプションとして追加できてうれしいですが、明らかに偏っています。 http://geoffreywiseman.github.com/Moo/
単純な場合には非常に使いやすく、より複雑な場合には妥当な能力がありますが、さらに複雑さを増すためにそれを強化することを想像できる領域がまだあります。
Dozerベースのマッピングフレームワークを試すこともできますが、Excelマッピング宣言を使用します。彼らはいくつかのツールと追加のクールな機能を持っています。 http://openl-tablets.sf.net/mapper
で確認してください。