知识卡片
持久化透明PI是理想领域对象与持久化机制的隔离
内容
将领域模型对象作为PO持久化时,可能为其带来外部框架的污染。理想的PO应是POJO/POCO,不依赖语言之外的框架,Fowler称之为持久化透明(persistence ignorance,PI)对象,形容其与具体持久化实现机制之间的隔离。Jimmy Nilsson列出违背PI的特征:从特定基类继承、只能通过工厂实例化、使用专门数据类型、实现特定接口、提供专门构造方法、提供必需的特定字段、避免或强制使用某些结构——这些无一例外都是外部框架对PO的侵入。活动记录模式明显违背PI,但因简单被RoR、jOOQ、scalikejdbc等采用。发散:PI是一把标尺——每当框架要求领域类继承基类、加注解、实现接口时,都是在扣分,需权衡是否值得。
参考来源
- 位置:《解构领域驱动设计》第19章 19.1.2(源文件:_epub-src/OEBPS/032.xhtml)
- 结论依据:原文引Fowler持久化透明概念与Nilsson列出的违背PI特征。
- 原始内容:Martin Fowler甚至将其称为持久化透明(persistence ignorance,PI)的对象,用以形容这样的持久化对象与具体的持久化实现机制之间的隔离。