|
|
1
5
你在这里使用“依赖性”这个词有点快和松散。Hibernate不是一个“客户端”;这是一个框架 你 (作为开发人员/架构师/你有什么)选择用来实现你的持久性。因此,您将在某个地方有一些使用(因此依赖于)Hibernate的代码。也就是说,有 不
你 不必“信任” 数据(详见下文)。然而,我认为这个论点没有道理。如果你在多个应用程序中修改数据,你应该在一些常见的较低层进行验证,而不是依赖每个单独的应用程序来验证数据。所述公共层可以是数据库本身(在简单的情况下),也可以是提供供多个应用程序使用的公共API的服务层。 直接 作为数据库的一部分
尽管如此,如果你确实想在对象被验证时验证它们
,实现起来相当简单。定义a
直接 。原因很简单——只有在以下情况下才有意义 实体(因为一旦你有了setter,你就必须处理验证),因此意味着要做很多工作(处理构造函数参数映射等……),才能实现几乎为零的净效应。事实上,如果你 那 关注不可变对象的无参数构造函数,你总是不能将它们映射为实体,而是通过HQL加载它们 做 支持 constructor injection :
(针对托马斯评论中的要点):
|
|
|
2
3
您的数据库应该包含有效的事实或真相,从数据库加载的数据不需要任何额外的验证,从数据库中提取的数据应该足够好。
|
|
|
3
2
如果需要,您可以将“if(!validated)”移动到checkInvariants()中。 您也可以查看Hibernate验证器,尽管它可能不符合您的框架独立性要求。 http://docs.huihoo.com/hibernate/annotations-reference-3.2.1/validator.html |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |