Java 如何在插入前检查记录是否存在
我使用的是Hibernate4.3.6Final和MySQL 5.5.37 假设我有两个表Java 如何在插入前检查记录是否存在,java,hibernate,orm,Java,Hibernate,Orm,我使用的是Hibernate4.3.6Final和MySQL 5.5.37 假设我有两个表Book和Words,还有一些代码解析书中的单词并将它们添加到Words表中。肯定会有一些词出现在不止一本书中。但是,如果一个单词已经在数据库中,我不希望它有一个新的条目。唯一的问题是Hibernate是否足够聪明,能够为此提供某种功能 有几种解决方案,但没有一种是好的: 在创建anyWord对象之前,请检查数据库中是否已有类似的对象。表演太糟糕了 捕获尝试插入副本时引发的异常并处理该异常。可怕的做法 对数
Book
和Words
,还有一些代码解析书中的单词并将它们添加到Words
表中。肯定会有一些词出现在不止一本书中。但是,如果一个单词已经在数据库中,我不希望它有一个新的条目。唯一的问题是Hibernate是否足够聪明,能够为此提供某种功能
有几种解决方案,但没有一种是好的:
Word
对象之前,请检查数据库中是否已有类似的对象。表演太糟糕了有更好的方法吗?您有三种选择:
我会选择#2虽然我理解不喜欢使用异常处理作为逻辑特性,但这个实例完全可以接受,而且#2是最好的选择。在本例中,您将利用Word表中唯一索引的功能,并忽略它引发的任何异常。这也是我想要做的,但我使用DAO将所有对象保存在数据库中。这意味着我要为公共DB操作共享一个类,这反过来意味着我必须为通用类中的特定情况编写一个特殊情况。不知何故,这似乎是非常错误的。