使用休眠检查数据库表中某些记录的最快方法[关闭]

Posted

技术标签:

【中文标题】使用休眠检查数据库表中某些记录的最快方法[关闭]【英文标题】:The fastest way to check if some records in a database table using hibernate [closed] 【发布时间】:2012-04-26 16:08:44 【问题描述】:

我有使用 hibernate orm 来处理 db 的 java 应用程序?那么在数据库中检查记录(映射到休眠对象)的最快方法是什么

【问题讨论】:

用你的dao从数据库中选择?我真的不明白这个问题。 附注会话工厂对象被 Hibernate 模板隐藏 我不想选择对象的所有字段并寻找api提供的简单检查方法 【参考方案1】:

使用entityManager.find

来自docs的示例:

long catId = 1234L;
em.find( Cat.class, new Long(catId) );

或者,计算记录:

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

【讨论】:

我不想选择对象的所有字段并寻找api提供的简单检查方法 @user590444 "api 提供的简单检查方式" 什么?? 如果您不想选择所有字段,则选择一个字段 - 有什么问题?您必须至少从数据库中选择某些内容以查看是否存在特定记录 - 为您的 WHERE 子句返回某些内容。 或者,计算记录。查看我的更新。 DetachedCriteria 收藏夹 = DetachedCriteria.forClass(Source.class).setProjection(Projections.rowCount()).add(Restrictions.idEq(request.id().getId()));

以上是关于使用休眠检查数据库表中某些记录的最快方法[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 hbase 表中获取计数记录?查询记录的最快方法是啥?

查询数据库记录数最快方法

如何在不使用索引检查 mysql 表中的 100000 条记录等所有行的情况下获得一行? [关闭]

将数据连续写入文件的 C 最快方法 [关闭]

如果不存在插入新记录的最快方法,请仔细检查?

计算一个非常大的表中确切行数的最快方法?