BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

ModelMapper: オブジェクト間マッピングライブラリ

| 作者: Kostis Kapelonis フォローする 0 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2012年11月22日. 推定読書時間: 2 分 |

原文(投稿日:2012/11/19)へのリンク

 

ModelMapperはJava Beans (Pojo) を別の表現に変換するオブジェクト間マッピングフレームワークだ。これは「設定より規約」というアプローチによって、異なるオブジェクトのマッピングを自動化すると同時に、特殊なケースには進んだ機能を提供できる。これは.NETAutoMapperライブラリに似ている(だが直接移植したものではない)。

非常にコンパクトなコードでシンプルな場合には、ModelMapperは設定なしに、Javaオブジェクトを別のものにマップできる。これは以下をサポートしている。

 

  • 名前ベースのオブジェクトプロパティのマッピング
  • public、protected、privateフィールドのコピー
  • 特定フィールドのスキップ
  • マッピングに影響を与えるコンバータ(例えば、文字列を小文字に変換するなど)
  • 異なる型のフィールド間のマッピング(例えば、文字列から数値)
  • 条件付きのマッピング
  • デフォルトでは不十分な場合の緩いマッピング戦略
  • マッピング処理の検証により、すべてのフィールドが説明できる
  • 特殊なケースにおける、マッピング処理の完全カスタムコントロール
  • GuiceSpringとのインテグレーション

 

あるオブジェクトから別の表現に変換するというのは、エンタープライズアプリケーションでよく見かけるパターンだ。例えば、データベースからロードしたドメインオブジェクトは、GUIとしてユーザに表示する必要がある。もともとのデータベース形式のオブジェクトには、そのライフサイクルに必要なプロパティが多数含まれている。しかし、ユーザにとって関心があるのは、各画面に1つ、2つのフィールドだけだろう。したがって、データベースで使われるPojo(JPAエンティティ)は、GUIで使われるPojoとは少し異なる場合が多い。これがModelMapperが解決しようとする問題だ。一般的に、オブジェクト変換は、エンタープライズアプリケーションのレイヤー間で情報を交換するときに発生する。

オブジェクト変換には他にも次のようなシナリオがある。

 

  • 複数のオブジェクトをひとつのオブジェクトに集約する
  • 既存のオブジェクトに追加のメタデータを計算して付与する
  • 外部システムに送信するためにオブジェクトを変換する
  • 未定義のプロパティをデフォルト値で埋める
  • 既存のプロパティをある方法で変換する(オブジェクトを自分自身にマッピングする)

 

ModelMapperはMaven Centralから利用可能だ。詳しくはユーザガイドJavadocを参照。ソースコードはGitHubにある。

 

Kostis Kapelonis: エンタープライズアプリケーションを専門とするソフトウェアエンジニア。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT