194
174

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

はじめに

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

おわりに

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

参考

194
174
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
194
174

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?