我有一个UserEntity,最终根据它的id
属性保存在DB中。在这种情况下,id
属性显然是敏感的,因为更改它会导致UserEntity在以后保留时保存在不同的UserEntity上。
我希望能够帮助安全防范这种情况发生......
选项1.我是否强制将id
传递给构造函数,从而删除Setter?
id
的最低要求)。 id
来提供它。 选项2.允许构造函数中的Id为null,但不提供Setter
id
创建一个新的UserEntity,并将其还原。id
我希望将其用于持久化/域逻辑/等,以确保它是一个已保存的实体。< / LI>
选项3.我不担心这么多,并为它提供一个制定者吗?
id
并覆盖db中的其他UserEntity的风险。id
的情况下创建一个新的UserEntity(),我可以将其传递到我的存储库进行保存。答案 0 :(得分:3)
如果您关心域对象的有效性,则需要始终确保有效性。
这意味着您不会在不想直接更改的属性上提供setter,而是使用指定的方法来改变它们的状态。
如果示例中的id
永远不会更改,则只应在构造函数中设置它(并强制传入)。