ボイラープレートコードなしでDTOをエンティティにマッピングする簡単な方法を見つけようとしています。私がドーザーを使用することを考えていた間、それは多くのxml設定を必要とするようです。 DSLを使用して純粋なJavaでBeanマッピングを構成するブルドーザーの代替案を見た人はいますか?
理想的には、Guiceのやり方に触発されたBeanマッパーを見つけたいと思っています。
私も代替案を探していました。
ここ はさまざまなオプションの非常に良いカバレッジです。
オリカ を見てください。
OrikaはJava Beanマッピングフレームワークであり、(他の機能の中でも)データをあるオブジェクトから別のオブジェクトに再帰的にコピーします。これは、多層アプリケーションを開発するときに非常に役立ちます。
私の観点からは、いくつかの特別なプロパティをマップするための構成またはJavaコードが常に必要です。
ここでは、たとえばDO
とDTO
を取り上げます。
DO:{
id: "id",
name:"name",
doName1: "doName1",
nestedObj: {
id: "nestedObjId",
name: "nestedObjName"
}
}
DTO{
id: "",
name: "",
name1: "" // for mapping doName1 in DO.
nestedId: "", //for DT.nestObj.id
nestedName: "", //for DT.nestObj.name
}
DozerまたはOrikaの場合、どちらも構成なしでDOとDTOの間でidとnameプロパティを自動的に照合できます。または、プロパティ名とタイプが同じであるため、Javaコードです。ただし、DO.doName1
<----> DTO.name1
またはDO.nestedObj.id
<---> DTO.nestedId
マッピングツールにそれを行うつもりであることを伝えるために、(xmlまたはJavaを介して)いくつかの構成を行う必要があります。あなたのユースケースでは、Dozer、Orika、ModelMapperはすべて問題ないと思います。しかし、私にとっては、パフォーマンスのためにプロジェクトをブルドーザーからオリカに切り替えています。 Orikaはブルドーザーほど成熟していませんが、インテリジェンスはそれほど高くなく、カスタマイズされたマッピング構成を維持するために多くの追加の仕事をする必要があります。プロジェクトがパフォーマンスをあまり気にしない場合は、ブルドーザーをお勧めします。非常に使いやすく、非常に多くの高度な機能をサポートしています。それ以外の場合、高性能を購入している場合は、orikaをお勧めします。