2012-04-18 14 views
0

私はいくつかの拡張がある複雑なオブジェクト階層を持っています。Javaの複雑なオブジェクト階層をコピーする

class One { ; 色の色; 衣類のリスト; }

クラス2が1つ拡張{ テストテスト; }

class Foo {One One; 2つの2つ。 }

クラスOneのオブジェクトのすべての属性を、別のクラスの新しいオブジェクトにコピーしたいと考えています。 これを行う方法は?利用できるライブラリはありますか?

答えて

4

はカップルです:

ドーザーはかなり高速で、コンフィギュレーションオプションのかなりの数を持っています。 Orikaは私がぼんやりと確認したわけではありませんが、おそらく非常に速いです(サイトに投稿したベンチマークをチェックしてください)。

+0

お役立ち情報ありがとう – axcdnt

+0

これは、私が仕事をするために使用するアーキテクチャーの素晴らしい試みです.TOをVOに変換するとき。もはや必要かもしれません。あなたはそれのようなもののためにそれを使ったことがありますか? – axcdnt

+1

エンティティオブジェクトをDTOにコピーするためにDozerを使用し、デカップルオブジェクトと非規範関係をうまく処理します。 XMLでリレーションシップを定義することができるため、オブジェクトの表現も互いに切り離すことができます。これは素晴らしいことです。 – Perception

3

Dozerは、あるオブジェクトから別のオブジェクトへデータを再帰的にコピーするJava BeanからJava Beanマッパーです。

アノテーションまたはXMLを使用して、オブジェクトフィールドをプログラムでコピーするためのマッピングを定義できます。ここで

2

私は、orikaとdozerの両方を使用していますが、orikaは私のプロジェクトでdozerよりも少なくとも10倍高速です。また、orikaではjvmヒープメモリーが少なくて済みます。 orikaの方が速いのは、実行時のマッピングルールを調べたり、Javaリフレクションを使用して実行時にプロパティ値を取得したり設定したりする代わりに、マッピングルールを実行時のJavaクラスとしてコンパイルすることです。

1

さらに高速オリカよりも、別のフレームワークがあります、そこを見てみましょう - クラス4つのフィールドと1000000のコピー操作とhttp://inspire-software.com/confluence/display/GeDA/Benchmarks

私の簡単なテストは、GEDAのためのオリカとドーザー

ため4000msのための1000ミリ秒を100ミリ秒を要しました
関連する問題