我正在参与一个使用Hibernate作为ORM的项目。但是,数据验证是在应用程序级别使用注释完成的。所以我的问题是 - 我可以使用已经使用过的注释进行验证,而不是将现有的注释添加到默认的Hibernate Validator注释中吗?
答案 0 :(得分:0)
没有理由你只能依靠应用程序级别的验证,但......注释实际上是不同的类型,因此两者都可能是必要的或建议的。
我将Hibernate验证注释仅视为持久层,确保至少进入数据库的任何内容都满足一些最低要求。它们通常(并且可能应该)匹配数据库定义本身具有的内容(至少在您处理RDBM时),但允许JPA / Hibernate在将请求发送到数据库的网络/服务器命中之前进行一些验证服务器
应用程序验证注释(应该是?)特定于业务规则,通常比数据库本身可能需要或了解的更复杂。
一个问题可能是使用相同持久层的应用程序之间的一致性。如果您只依赖于应用程序注释并且他们没有验证相同的内容 - 尤其是关于可空性,空虚,合法值等等 - 那么由一个应用程序创建/更新的数据可能会导致另一个应用程序出错。如果非常基本的规则只在持久层中,那么你(希望)知道基础是正确的。
当然,持久性验证注释可以为实现/确认业务逻辑做很多事情,所以它实际上取决于您想要验证的位置。