はじめに
どうも、稲葉です。この記事では、BeanとDTO、Entity、Formについてまとめます。
Bean
Beanは次の要件を満たします。
- 引数がないコンストラクタを公開すること
- シリアライズが可能であること
- プロパティそのものは公開せず、アクセサメソッドを定義すること
DTO
DTO(Data Transfer Object)とは、Beanのうち、データの転送をするためのオブジェクトです。データストア・外部実体と情報の受け渡しをします。EntityやFormと命名されたクラスが使用される場合、データを転送する相手は外部システムです。DTOは責務が外部実体・データストアと情報をやり取りすることであるため、基本的にアクセサメソッド以外の処理を定義しません。
Entity
Entityとは、DTOあるいはBeanのうち、データストア、すなわちデータベースと情報の受け渡しをするためのオブジェクトです。データモデルのエンティティないしデータベースのテーブルと対応します。よって、プロパティの型は基本的にResultSet
クラスのgetterの引数やPreparedStatement
クラスのsetterの戻り値の型となります。
Form
Formとは、DTOあるいはBeanのうち、画面によって外部実体、つまりユーザと情報の受け渡しをするためのオブジェクトです。画面の入出力項目群と対応します。よって、プロパティの型は基本的にString
型となります。
おまけ
データ層で使用するEntity、プレゼンテーション層で使用するFormではプロパティの型が制限されていたり、アクセサメソッド以外の処理を定義しなかったりします。そのため、オブジェクト指向プログラミングでは情報と処理をまとめたクラスを作成してアプリケーション層で使用することもあります。
おわりに
BeanとDTO、Entity、Formの関係をまとめると次のようになります。
Beanの種類 | 授受の相手 | 作成の単位 |
---|---|---|
DTO | データストア・外部実体、とくに外部システム | 任意 |
Entity | データストア | テーブル |
Form | 外部実体のうち、ユーザ | 入出力項目群 |