忽略现有项目并使用休眠将剩余项目插入数据库

时间:2012-09-28 19:17:06

标签: hibernate dao

我有textarea,我可以在其中输入要阻止的网站名称。所有输入的站点都存储在SITES表中。如果输入的任何站点都在SITES表中,我们应该忽略这些站点并插入剩余的站点。

我们应该如何使用hibernate?

2 个答案:

答案 0 :(得分:0)

您可以(也可能应该)在Hibernate或数据库级别执行的操作是向包含站点名称的字段添加唯一约束。这将确保在添加重复项时引发异常。但是为了防止此异常,您必须检查应用程序代码中的预先存在的网站,例如:通过对要添加的每个站点使用查询,或者一次加载整个表,然后检查每个输入的站点名称。

请注意,您可能需要对网站名称进行某种规范化,例如修剪空格或转换为小写以确保您识别任何重复项(例如,www.EXAMPLE.comwww.example.com应该被认为是相等的)。在Hibernate Validator中,您可以使用模式约束来强制执行此规范化。

答案 1 :(得分:0)

执行第一个查询:

select site.name from Site site where site.name in (:enteredSiteNames)

然后从输入的网站列表中删除所有找到的网站(因为它们已经在数据库中)。

然后迭代剩余的网站,并坚持下去。