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を必ず付ける人がいるのはこういうポリシーだったのかと納得。
これからはもう少し考えて付けるようにします。