Help us understand the problem. What is going on with this article?

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

おわりに

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

参考

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした