様々な業務でシステム開発をしているとDTOやVOというクラスが出てきて違いが曖昧になってくる事があるので両者の違いについて整理しておきます。
DTO(Data Transfer Object)
- 基本的には値をまとめて受け渡す事のみを目的とするクラス。
- DTO(Data Transfer Object)はデザインパターンの一つ。
- 過去、J2EEではVO(Value Objects)と呼ばれていた。
- VOとは違い、値は変更可能なのでsetterメソッドを持つ。
VO(Value Objects)
- VO(Value Objects)もデザインパターンの一つ。
- インスタンスコンストラクタでプロパティを初期化してプロパティの変更(set)は外から出来ないようにするクラス。
- VOは不変である事が前提のため、MVC間で使用する場合にはDTOを用いた方が相性が良い。
- VOクラス例
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152/*** <p>[概 要] SampleVO。</p>* <p>[詳 細] </p>* <p>[備 考] </p>* <p>[環 境] </p>*/public class SampleVO implements Serializable{/*** 番号*/private Integer no;/*** データ*/private String data;/*** <p>[概 要] コンストラクタ。</p>* <p>[詳 細] </p>* <p>[備 考] </p>* @param no* @param data*/public SampleVO(Integer no, String data) {this.no = no;this.data = data;}/*** <p>[概 要] 番号を取得する。</p>* <p>[詳 細] </p>* <p>[備 考] </p>* @return 番号*/public Integer getNo() {return no;}/*** <p>[概 要] データを取得する。</p>* <p>[詳 細] </p>* <p>[備 考] </p>* @return データ*/public String getData() {return data;}}