知识卡片
持久化对象PO是领域模型对象扮演的角色而非独立对象
内容
参与持久化操作的对象被称为持久化对象(persistence object,PO)。注意PO并不一定是数据对象,相反在DDD中PO往往就是领域模型对象——领域模型对象与持久化对象并不矛盾,它们只是不同场景下扮演的不同角色:在领域层不考虑持久化,故称领域模型对象;持久化时,满足ORM规范的框架操作的仍是领域模型对象,只是不关心其封装的领域行为。只要对象需持久化就会成为PO,与采用什么建模/设计方法无关,即使不用DDD也可能需要PO,区别只在由谁负责持久化。发散:把PO理解成”角色”而非”类型”,就不会再为领域对象是否要另建一套数据对象而纠结。
参考来源
- 位置:《解构领域驱动设计》第19章 19.1.2(源文件:_epub-src/OEBPS/032.xhtml)
- 结论依据:原文强调PO是领域模型对象在持久化场景下扮演的角色,二者不矛盾。
- 原始内容:它们只是不同场景下扮演的不同角色……许多满足ORM规范的持久化框架操作的仍然是领域模型对象。