0

今天出现了一个非常有趣的话题,有两种观点。

使用教义实体

  1. 是否应该在调用 setter 方法时对数据进行验证?即在 setFieldName() 方法内,或
  2. 当在实体上触发事件时,是否应将实体作为一个整体进行验证以获取有效数据?

对此是否有正常的或久经考验的理论和/或观点?

4

1 回答 1

0

我认为没有“正常”/标准的方式来解决这个问题 - 我想这取决于您的需求。我可以告诉你我的观点:对我来说,数据验证应该在 setter 上完成——也就是说——尽快。这样,您就不能拥有一个带有无效数据集的实体,并且当您要坚持时,它会让您头疼。

试着这样想:假设你有一辆汽油车。你去加油站加油。你有两个泵:汽油和汽油。如果没有验证,您可以将任何一种类型的燃料放在那里,直到您打开发动机,什么都不会发生。但是当你这样做的时候,如果你放错了燃料,那就太晚了。呜呜呜!当然实体不会爆炸。;)

话虽如此,有时不可能对单个 setter 进行验证,因为它可能依赖于另一个属性(尚未设置)。类似于用户实体的 VATID,其中属性 user_type(private|company) 必须可用,以便能够检查和强制公司的 VATID。在这种情况下,您需要做一些PrePersist/PreUpdate 验证

于 2014-06-30T07:53:31.693 回答