在Hibernate中高效删除

时间:2012-07-04 10:37:57

标签: java mysql database hibernate

我知道以下代码将从数据库中删除id = 5的记录:

 Query query = session.createQuery("delete from Class where id = 5");
 query.executeUpdate();

但在删除之前,需要将此记录的数据保存在变量中。 所以我想选择id = 5,在一些代码之后,我删除它。 如果我对它们使用两个不同的查询,则效率不高。因为这样我们搜索该项目的数据库两次。

query = session.createQuery("from Class where id = 5");
//somecode
query = session.createQuery("delete Class where id = 5");
...

所以我需要一种更有效的方法来做到这一点,并做得更好。

2 个答案:

答案 0 :(得分:4)

无需创建查询来删除记录。

query = session.createQuery("from Class where id = 5");
List list=query.list();
if(list.size()!=0)
 {
   ClassName obj = (ClassName)list.get(0);
   session.delete(obj);
  }

答案 1 :(得分:3)

Hibernate有一个Session.delete()方法。如果您已经有要删除的实体的引用,请使用它。无需查询。

这也适用于在关联上配置的潜在级联,删除查询不会。