これらの乱雑なデータモデルに触れると、本当に混乱し、設計アーキテクチャも混乱しています。データモデルに基づいて適切なパッケージ名を取得する方法がわからず、オンラインのさまざまな情報を参照しましたが、誰もがわかりやすく説明していませんでした。そのため、私は経験に基づいて整理しました。
POJO
【plain old java object】:プレーンな Java オブジェクトで、他のデータモデルの基礎として使用できますVO
【value object】:値オブジェクトは不変のオブジェクトで、一意の ID 識別子がありません。一連の値を表すために使用されます【つまり、2 つの値オブジェクトのプロパティが同じ場合、それらは等しいと見なされます】- 単純なビジネスロジック操作を含めることができます
- VO には通常、値に基づいて比較するために equals と hashCode メソッドをオーバーライドします
PO / エンティティ
【Entity】:エンティティには一意の ID 識別子が必要です。つまり、2 つのエンティティのプロパティ値が同じ場合、それらは等しくありません。PO はデータベーステーブルとマッピングされる Java オブジェクトです【したがって、PO とエンティティは同じ概念と見なすことができます】DTO
【data transfer object】:DTO は異なる層間でデータを転送するために使用されます- 任意のビジネスロジックを含みません
充血モデル
:充血モデル = PO + ビジネスロジック、ある PO にビジネスロジックが含まれている場合、それは充血モデルですBO
【Business object】:ビジネスオブジェクトにはビジネスロジックが含まれています- サービス層でのみ使用されます