3

我想为使用 SpringMVC 和 Hibernate 的应用程序自动进行客户端数据验证,特别是在违反引用完整性约束的情况下。我的应用程序结构的简单版本如下:

D B

我有一个带有一些表的 oracle 数据库,让我们举个例子

具有DOCUMENT整数主键DOC_KEYTITLE字段的表PAGE具有外键FK_DOCUMENT_ID、键PAG_KEY和文本“TEXT”字段的表。

ORM/应用层

我有两个(休眠)实体(DocumentPage)映射这些表。要创建一个Page您需要在之前创建一个,如果没有在外键字段中指定相关项Document,则无法创建一个。PageDOC_KEY

网络层

我创建了一个表单,允许用户创建一个包含一些页面的新文档。他可以插入文档的标题和一页或多页。尝试在Page不指定Document标题的情况下创建对象会导致 DB 错误,因为没有为页面指定文档。

示例用例

用户尝试创建一个页面来设置其内容而不指定文档标题。客户端验证器将标题字段标记为红色,要求用户填写。

问题

如果我尝试插入的实体/对象/行不满足 FK 完整性规则检查,是否可以自动生成客户端验证规则以避免服务器端调用?

或者是否有任何工具允许客户端验证工具“理解”外键一致性?

我尝试使用 jquery,但无法找到自动检查外键一致性的方法。

编辑: *接受答案的注释*当然,如果不查询或缓存客户端,就无法知道数据库客户端的状态,但该知识对于检查密钥是否存在并且是否满足完整性约束是必要的。我接受的答案与问题的重点相匹配。我之前应该考虑过的

4

3 回答 3

1

If you declare you database rules on the hibernate entities (what I would recommend), you might want to check the JSR303JS project. I haven't used it myself and it doesn't seem to be very active, but it should give you an idea how you could implement to yourself.

于 2013-09-09T09:30:36.367 回答
1

Is it possible to automatically generate client side validation rules to avoid a server side call in case the Entity/Object/row I'm trying to insert doesn't satisfy the FK integrity rule check?

The Answer is a no..!!

The database can be set with the different foreign key relations mapping and its integrity can be maintained by specifying the Foreign key relations in the mapping class. But the hibernate does not do anything in the front end.!!

You can do validations using the hibernate annotations.But that can only be done in the back end. Hibernate does not deal with the front end.!!

I understand the requirement that you have, but hibernate is not a front end tool. I suggest, any Operations related to DB communication must stay in the back end, else it makes an entry point to security freaks. Better keep it behind the service layer.

于 2013-09-09T10:21:20.017 回答
0

您可能需要检查文档是否是较早创建的,并且您必须将其保存在 js 的某个全局对象中,然后检查页面。如果两者都有数据,则进行插入。您可以使用 jquery 来实现这一点。

于 2013-09-06T11:07:39.577 回答