Java 使用hibernate检查数据库表中是否存在某些记录的最快方法

Java 使用hibernate检查数据库表中是否存在某些记录的最快方法,java,hibernate,query-optimization,Java,Hibernate,Query Optimization,我有一个java应用程序,它使用hibernate orm来处理db?那么,在db中检查记录(映射到hibernate对象)是否存在的最快方法是什么呢 示例来自: 或者,清点记录: Integer count = (Integer) session.createQuery("select count(*) from Cats c where c.id = :catId") .setLong("catId", 1234L)

我有一个java应用程序,它使用hibernate orm来处理db?那么,在db中检查记录(映射到hibernate对象)是否存在的最快方法是什么呢

示例来自:


或者,清点记录:

Integer count = (Integer) session.createQuery("select count(*) from Cats c where c.id = :catId")
                          .setLong("catId", 1234L)
                          .uniqueResult();
boolean exists = count > 0;

是否使用dao从数据库中进行选择?我真的不明白这个问题。会话工厂对象被Hibernate Template隐藏我不希望选择对象的所有字段并查找apiI提供的简单检查方法我不希望选择对象的所有字段并查找apiI提供的简单检查方法api@user590444“api提供的简单检查方法”怎么办?如果您不想选择所有字段,然后选择一个字段-有什么问题?您必须从数据库中至少选择一些内容,以查看是否存在特定的记录—要为WHERE子句返回的内容。或者,对记录进行计数。请参阅my update.DetachedCriteria favorites=DetachedCriteria.forClass(Source.class).setProjection(Projections.rowCount()).add(Restrictions.idEq(request.id().getId());
Integer count = (Integer) session.createQuery("select count(*) from Cats c where c.id = :catId")
                          .setLong("catId", 1234L)
                          .uniqueResult();
boolean exists = count > 0;