BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ModelMapper: オブジェクト間マッピングライブラリ

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

原文(投稿日: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: エンタープライズアプリケーションを専門とするソフトウェアエンジニア。

この記事に星をつける

おすすめ度
スタイル

BT