如何区分Entity与Value Object?员工薪资记录选型困惑求解
员工过往薪资:Entity还是Value Object?
别纠结书本上的定义,核心看这条薪资记录在你的业务流程里是否需要独立身份和可修改性:
- 如果这条薪资记录需要被单独操作(比如HR要修改某条历史薪资的备注、标记为“补发/调整”、关联审批流程),或者存在“属性完全相同但却是两条不同记录”的情况(比如同一员工在同一时间段因补发产生两条同金额薪资),那它就是Entity。此时你需要给每条记录一个唯一标识(比如
salary_id),用这个标识来判定相等性,而不是看薪资金额、时间这些属性。 - 如果这条薪资只是员工薪资历史的静态快照,永远不会被修改,唯一意义就是“某员工在某段时间拿了某薪资”,那它就是Value Object。此时只要员工ID、生效时间段、薪资金额这几个属性一致,就认为是同一条记录,不需要单独的主键,用复合属性就能判定相等性。
结合你提到的“网站列表展示”场景:如果只是单纯展示历史数据,没有后续编辑、关联等操作,Value Object完全够用;但如果未来可能要对单条薪资做管理,那一开始就设为Entity会更稳妥。
内容的提问来源于stack exchange,提问作者bart
相关产品推荐
相关产品推荐

