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