清洁架构下删除宠物时的数据完整性管控:领域层还是数据层?
清洁架构下删除宠物的推荐方案
在清洁架构的设计逻辑里,优先选方案1——在领域层处理这个业务规则,原因如下:
- 领域规则要守在核心层:"人必须至少有一只宠物"是核心业务约束,属于领域层的管辖范围。把检查逻辑放在这里,不管后续怎么改持久化方式(比如换数据库),所有操作都得遵守这个规则,不会出现规则漏判的情况。
- 仓库别搞成"万能工具":
PetRepository的本职工作就是管宠物数据的增删改查,不该掺业务规则。要是把删宠物时的人员检查塞进去,仓库就变成既管数据又管业务的大杂烩,后续改规则或者换仓库实现都麻烦,违反单一职责原则。 - 测试起来更省心:领域层的逻辑不用依赖数据库,写单元测试直接测就行,很容易验证"删唯一宠物时同步删人"这个逻辑对不对。要是把逻辑放数据库里(比如触发器、存储过程),测试得连数据库一起搭,维护成本高不说,出问题排查也费劲。
另外可以在数据库层面加个兜底约束(比如给Person表加关联宠物数量的校验),但核心的业务判断必须放在领域层,这才符合清洁架构"领域层为核心,外层依赖内层"的思路。
内容的提问来源于stack exchange,提问作者salim.elkh
相关产品推荐
相关产品推荐

