Db字段验证客户端

时间:2013-07-31 15:15:01

标签: java jquery oracle hibernate spring-mvc

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

DB

我有一个带有一些表的oracle db,让我们以例如

包含整数主键DOCUMENTDOC_KEY字段的表TITLE 使用外键PAGE,密钥FK_DOCUMENT_ID和文本“TEXT”字段的表PAG_KEY

ORM /应用层

我有两个(休眠)实体(DocumentPage)映射这些表。要创建Page,您需要先创建Document,否则无法在外键字段中指定相关的Page来创建DOC_KEY

网络图层

我创建了一个表单,允许用户使用某些页面创建新文档。他可以为文档和一个或多个页面插入标题。尝试创建Page对象而不指定Document标题会导致数据库错误,因为没有为页面指定文档。

示例用例

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

问题

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

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

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

修改 * 关于已接受答案的说明 * 当然,没有办法在不查询或缓存客户端的情况下知道数据库客户端的状态,但是需要知识来检查密钥是否存在以及是否满足完整性约束。我接受的答案与问题的重点相符。 我应该在

之前考虑过这个问题

3 个答案:

答案 0 :(得分:1)

如果您在hibernate实体上声明了数据库规则(我建议使用),您可能需要检查JSR303JS项目。我自己没有使用它,它似乎不是非常活跃,但它应该让你知道如何实现自己。

答案 1 :(得分:1)

  

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

答案是否定的...... !!

可以使用不同的外键关系映射设置数据库,并且可以通过在映射类中指定外键关系来维护其完整性。但是hibernate在前端没有做任何事情。!!

您可以使用hibernate注释执行validations。但这只能在后端完成。 Hibernate不处理前端。!!

我理解你的要求,但是hibernate不是前端工具。我建议,任何与数据库通信相关的操作都必须留在后端,否则它就成了安全怪胎的切入点。 最好将其置于服务层之后。

答案 2 :(得分:0)

您可能必须先检查文档是否是先前创建的,然后必须将其保存在js的某个全局对象中,然后检查页面。如果两者都有数据,那么就去插入。你可以使用jquery实现这一点。