知识卡片
数据库别绑领域
内容
传统分层若让领域对象依赖关系数据库和ORM细节,业务逻辑会被存储技术绑架。真正的领域模型应通过端口、仓储和分层隔离基础设施,保留迁移和演进空间。
参考来源
- 位置:《复杂软件设计之道》第5章《CQRS架构》"5.1.2 传统三层架构"缺点小节(源文件:_chapter_text/ch05.txt)
- 结论依据:原文明确"应用层依赖数据层,数据层依赖数据库,导致应用层的业务逻辑严重依赖数据库……实现数据库或前端技术升级时,应用层的业务代码几乎全部需要重新编写,业务代码无法独立于技术而存在",说明领域逻辑绑定数据库会失去演进空间。
- 原始内容:当业务复杂时,更大的业务逻辑会写入应用层的服务类中,因为应用层依赖数据层,数据层依赖数据库,导致应用层的业务逻辑严重依赖数据库,运行时负载集中在数据库一端,造成数据库缓慢或延迟。实现数据库或前端技术升级时,应用层的业务代码几乎全部需要重新编写,业务代码无法独立于技术而存在,无法形成自我演进和思考路径。