Java基礎ーPOJO,Bean,DTO,Entity,VOの違い

POJO,Bean,DTO,Entity,VO

VO (Value Object)

オブジェクトとしての塊というより、プロパティを基準にしたクラス。
値の設定はコンストラクタのみでゲッターは持っているがセッターを持たない(値は不変)。
DDD(domain driven design:ドメイン駆動設計)のデザインパターンとされる。


DTO (Data Transfer Object)

異なるレイヤー間(モデル層、ビュー層など)でデータを受け渡すのに使用する。
データは最終的にはDB処理に利用されることが前提とされているため、シリアライズ可能であることもDTOの条件となる。
ゲッターセッター両方持ち、値の変更が可能。


Entity

永続化可能なJavaオブジェクト。
Entityの1インスタンスがDBのレコードの1行に相当する、というイメージ。
DBのテーブル単位でEntityを利用する場合、必ず主キーを所有している必要がある。


Form

画面上での入力値を保持するクラス。


Model

Springが用意するMapオブジェクトでViewに渡すオブジェクト。
FormはModelに格納されて画面に渡される。


POJO(Plain Old Java Object)

上記のものの総称。 Javaで記述されるオブジェクトのうち、特定のフレームワークやオブジェクトモデル、規約などに縛られず、また、これらに依存しないシンプルな仕様のもの。
「昔からある単なるJavaオブジェクト」の意。


Bean

Sun Microsystems社のJavaBeans仕様に準拠した再使用可能なオブジェクト。

・最低限、クラスにはプロパティ(フィールド)が必要
・プロパティはメソッドを使用する他のJavaクラスに公開される
・ただし、アクセス修飾子はprivateとし、次のメソッドをコールする必要がある

set PropertyName
get PropertyName
※PropertyNameはプロパティの名前。

★JavaBeansを使用する3つの利点

1.標準コンポーネント・モデルとしての認知度が高い

JavaBeansはSun Microsystems社のオープン標準であり、誰でも自分の製品にJavaBeansの設計パターンでクラスを実装して自分のアプリケーションに組み込むことが出来る。
Java開発および配布環境を生産する複数のハードウェアおよびソフトウェア・ベンダーからの幅広いサポートが可能になる。

2.プラットフォームに依存しない

JavaBeansはプラットフォームに依存しないので、一式のJavaBeansを作成し、コードを変更せずに異種環境に配布可能。
異なるハードウェアやOSの互換性の問題を気にすることなく、サード・パーティ製のJavaBeansをアプリケーションで再使用出来る。

3.サード・パーティ製コンポーネントに対応しやすい

入手可能な多数のサード・パーティ製JavaBeansを使用して、アプリケーションに組み込み、カスタマイズできる。
既存のコンポーネントを組み込み、カスタマイズすることで、開発時間を大幅に短縮出来る。