デザインパターン
Swift

VO, DTO, POSO, DAO, Entity の違い

More than 1 year has passed since last update.


はじめに

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両方の性質をかねる


おわりに

ざっと調べた感じ、上記のように理解しました。

言語とか設計思想によっては、意味が異なってくるかもしれません。

間違ってたら教えてください。


参考