当前位置: 首页 > 面试题库 >

使用Spring Hibernate模板时检测重复项的最佳方法

胡劲
2023-03-14
问题内容

我们有一个应用程序,需要在创建时检测某些字段中的重复项。我们使用Hibernate作为持久层,并使用Spring的HibernateTemplate。我的问题是,最好是在创建之前对项目进行先期查找,还是尝试捕获DataIntegrityViolation异常,然后检查是否由重复的条目引起,是否更好。


问题答案:

这取决于重复是例外情况还是业务逻辑案例。
例如,在注册过程中检查唯一的电子邮件/用户名是一种业务逻辑案例,应在尝试插入之前进行检查

如果需要通过唯一性约束指示哪个字段确实失败,则最好事先检查它,而不是捕获异常。捕获异常不会为您提供重要的详细信息-哪个字段失败了。

有一些方法可以基于异常获取此信息,但是它非常繁琐且特定于数据库(在DB中查找约束名称(特定于db),获取要应用的字段,将字段与实体属性)



 类似资料:
  • 问题内容: 我正在尝试优化正在生产中的查询,这需要很长时间。目标是根据匹配的字段值条件查找重复的记录,然后将其删除。当前查询通过t1.col1 = t2.col1上的内部联接使用自联接,然后使用where子句检查值。 有什么更好的方法可以做到这一点?还是基于索引都一样?可能是 该表有100m +行。 MS SQL,SQL Server 2008企业版 问题答案: 为什么要自我加入:这是一个综合性问

  • 我对Laravel还比较陌生,正在寻找检查模型是否返回任何结果的最佳方法。 如果未找到结果,下面的示例将返回。如果你只想要第一个结果,这是完美的。 下面的示例将返回一个对象,而不管是否有任何结果。 因此,我现在不得不这样做,每次: 我有调用各种模型的方法,所有这些函数的代码看起来既丑陋又低效。 仅供参考,由于我们的PHP版本(不在我的控制范围内),我目前正在使用Laravel 5.1。

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: 如何使Eclipse在Play中看到更改!编译模板? 我正在玩Play的第一步!框架和我遇到了一些问题。我可以毫无问题地创建和遮盖一个项目。 现在,如果我添加一个新视图,例如“ sometest.scala.html”,并尝试在“应用程序”中使用它,则Eclipse将该文件标记为错误。 Eclipse标记为红色,即使它可以工作。

  • 问题内容: 检测用户是否离开网页的最佳方法是什么? 在JavaScript事件不起作用每次(HTTP请求花费的时间比需要的时间终止浏览器)。 创建一个可能会被当前的浏览器阻止。 问题答案: 尝试以下事件:在页面卸载之前将其触发。它还允许您询问用户是否真的要离开。 另外,您可以在他离开时发送Ajax请求。

  • 我读过一些关于如何将Mongo与Node一起使用的指南,它们似乎都以不同的方式连接到数据库。对我来说很有效的一种特殊方式是: 然而,这对我来说似乎是低效/奇怪的,每次有时,我都必须重新连接到数据库,例如创建新用户或检索信息。 另一种似乎更适合我的方式是 我见过几个网站按照这些思路做了一些事情,但我个人无法让上面的工作。我一直收到错误服务器端。所以,我的问题是为什么上面的代码不起作用,如果第一个代码

  • 问题内容: 处理浏览器不支持HTML5 标签的情况的标准方法是嵌入一些后备内容,例如: 但是页面的其余部分保持不变,这可能是不合适的或令人误解的。我想要一种检测画布不受支持的方法,以便可以相应地显示页面的其余部分。你会推荐什么? 问题答案: 这是Modernizr以及基本上所有其他执行画布工作的库中使用的技术: 由于您的问题是在 不 支持的情况下用于检测,因此我建议像这样使用它: