トップ OSS紹介 Dozer

Dozer

サポート対象

NRIのOpenStandiaが提供するDozer最新情報

バージョンアップ情報

Dozer情報

Dozerとは

Dozerは、Java Beans間でデータをマッピングするためのJavaライブラリです。あるオブジェクトから別のオブジェクトへ、フィールドの値をコピーする処理を簡略化します。特に、異なるクラス構造を持つオブジェクト間でのデータ転送に役立ちます。

主な機能

  • 異なるクラス間のBeanマッピング
  • 型変換(例:StringからInteger)
  • 双方向マッピング
  • カスタムコンバータによる高度なマッピング
  • XML設定またはアノテーションによるマッピング定義

主な特徴

  • 再帰的なマッピング:ネストされたオブジェクトも自動的に処理
  • シンプルなAPI:簡単に使用開始可能
  • 柔軟な設定:XMLまたはアノテーションでマッピングを定義

メリット・デメリット

メリット・必要性

  • ボイラープレートコード(※1)の削減:手動でのフィールドコピーが不要
  • 開発効率の向上:マッピング処理の実装時間を短縮
  • コードの可読性向上:マッピングロジックが明確化
  • 異なるオブジェクト間のデータ転送を容易化
  • ボイラープレートコード:ボイラープレートコードとは、プログラミングにおいて、ほとんどまたは全く変更せずに複数の場所で繰り返される定型コードのことを指します。このようなコードは、プログラム全体で共通の構造や機能を提供するために使用されます。

デメリット・注意点・課題

  • パフォーマンス:リフレクションを使用しているため、複雑なマッピングではオーバーヘッドが発生する可能性
  • メンテナンス:XML設定が肥大化すると管理が難しくなる場合がある
  • 近年は活発な開発が行われていないため、最新のJava環境への対応が遅れる可能性がある。
  • 代替となるマッピングライブラリ(ModelMapper, MapStructなど)が登場しており、そちらの方がパフォーマンスや機能面で優れている場合がある。

導入事例

異なるデータ転送オブジェクト(DTO)間でのデータ変換、レガシーシステムと新しいシステム間のデータ連携などで使用されます。

類似プロダクト

以下のいずれもJava Beans間でデータをマッピングするためのJavaライブラリです。

Dozerと上記3つのOSSを複数の観点で比較すると、以下のようになります。

特徴

Dozer

ModelMapper

MapStruct

Orika

マッピング定義

XML、アノテーション

アノテーション、API

アノテーション

ビルダーAPI、XML

パフォーマンス

比較的低い(実行時リフレクションを使用)

中程度(実行時リフレクションを使用)

高い(コンパイル時にコード生成)

中程度(バイトコード生成)

型変換

カスタムコンバータで対応

ビルトインの型変換、カスタムコンバータ

ビルトインの型変換、カスタムマッパー

カスタムコンバータで対応

複雑なマッピング

XMLで詳細な設定が可能

柔軟な設定が可能

比較的シンプル、高度なマッピングはやや複雑

柔軟な設定が可能

メンテナンス

XML設定が肥大化すると管理が難しくなる場合がある

比較的容易

容易

比較的容易

開発状況

近年は活発な開発は行われていない

比較的落ち着いている

この中では最も活発に開発されている

比較的落ち着いている

学習コスト

比較的低い

比較的低い

比較的低い

比較的高い(APIの理解が必要)

主な用途

シンプルなBeanマッピング、レガシーシステム

幅広い用途

パフォーマンスが重要な場合

複雑なマッピング、大規模アプリケーション

これらのライブラリはDozerと同様の機能を提供し、パフォーマンスや機能面で優れている場合もあります。特にMapStructはコンパイル時にマッピングコードを生成するため、実行時のパフォーマンスが高いことで知られています。

こんなお客さまにDozerの導入をオススメ

  • シンプルなBeanマッピングを行いたい方
  • レガシーシステムでDozerを既に利用している方
  • XML設定での詳細なマッピングを行いたい方

動作環境

Java 6以上(最新バージョンではJava 8以上が推奨される可能性あり)

Dozerのライセンス

Dozerのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。

製品ダウンロード

Mavenを使用する場合:


<dependency>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-core</artifactId>
<version>6.5.2</version>
</dependency>

Gradleを使用する場合:


implementation 'com.github.dozermapper:dozer-core:6.5.2' // 最新バージョンを確認

GitHubからソースコードをダウンロードすることも可能です。

OSS独自の専門的な情報

Dozerは、マッピング定義をXMLファイルまたはアノテーションで行うことができます。XMLではより詳細な設定が可能ですが、アノテーションを使用するとコードが簡潔になります。カスタムコンバータを実装することで、複雑な型変換やマッピングロジックを実装できます。

将来性

近年は活発な開発が行われていないため、将来性は不透明です。より活発に開発されている代替ライブラリの利用も検討に入れるべきでしょう。

学習・習得方法

日本語の情報は多いとは言えませんが、Dozerの公式ドキュメント(英語)で、十分な情報が得られます。

FAQ

  • Q: Dozerはパフォーマンスに影響しますか?
     A: 複雑なマッピングではオーバーヘッドが発生する可能性があります。パフォーマンスが重要な場合は、MapStructなどの代替ライブラリを検討してください。
  • Q: 最新のJavaバージョンに対応していますか?
     A: 最新バージョンを確認し、対応状況を確認してください。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • MapStruct
    サポート対象

    MapStruct

    マップストラクト。JavaBean間のマッピング実装を簡素化するコードジェネレータです。

  • Jackson
    サポート対象

    Jackson

    ジャクソン。JSON(JavaScript Object Notation)を扱うためのJavaライブラリです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。