プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

Beans、DTO、Entityの違い

Beans、Data Transfer Object、Entity。

いずれもJavaにおいてデータを保持するためのクラスだ。

あまり深く考えず雰囲気で使い分けていた。

ビジネスを表現するデータは「Entity」、

その中でも小粒なものは「VO」。

それ以外でアプリケーションが処理しやすいようにまとめたデータは「DTO」。

Beans Validationするときとかは結びつきを連想しやすいように「Bean」。

そんな感じ。


偶然、よい説明に出会った。是非、読んでいただきたい。

https://yyyank.blogspot.com/2013/07/javabeansbeandtoentityvoformwhat-is.html

Bean

  • JavaBeans系のオブジェクトの総称
  • DTOもEntityもJavaBeansのパターンのひとつ

Entity

  • 永続化可能なBean
  • DBのエントリに相当

DTO

  • 大きな境界をまたぐときに受け渡すBean
  • 処理効率化を目的として必要な情報を色々なところからかき集めて作る
  • シリアライズ可能にする
    • 境界の先が同一マシンのこともあれば別マシンのこともある
    • 今は同一マシン上でもリファクタされて将来、別マシンになるかもしれない

VO

  • BeanというよりDDDの要素

なるほど。。。

DTOにSerializableを必ず付ける人がいるのはこういうポリシーだったのかと納得。

これからはもう少し考えて付けるようにします。