162
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

はじめに

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

おわりに

ざっと調べた感じ、上記のように理解しました。
言語とか設計思想によっては、意味が異なってくるかもしれません。
間違ってたら教えてください。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
162
Help us understand the problem. What are the problem?