はじめに
try! Swift ではじめてDTO、POSOという言葉を聞いて、Entityとの違いとかよくわからなかったので調べてみた。
すると、類似の用語が5つでてきた。
- VO (Value Object)
- DTO (Data Transfer Object)
- POSO (Plain Old Swift Object)
- JavaだとPOJO (Plain Old Java Object)
- DAO (Data Access Object)
- Entity
いずれもシンプルに関連するデータをまとめたobjectだが、微妙に性質が異なる。
VO (Value Object)
- getterのみ
- 不変
DTO (Data Transfer Object)
- VO + setter
- 可変。外から変更可能
- 異なるレイヤー間(モデル層、ビュー層など)でデータを受け渡すのに使う
POSO (Plain Old Swift Object)
- おそらくDTOと同じ。たぶん
DAO (Data Access Object)
- DAO自体はデータを保持せず、DBにアクセスし、DTO/VOを返す
Entity
- 1つのオブジェクトでDTOとDAO両方の性質をかねる
おわりに
ざっと調べた感じ、上記のように理解しました。
言語とか設計思想によっては、意味が異なってくるかもしれません。
間違ってたら教えてください。