【问题标题】: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提供的简单检查方法

标签: java hibernate query-optimization


【解决方案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()));
猜你喜欢
  • 1970-01-01
  • 2014-10-27
  • 2011-01-28
  • 2016-12-10
  • 2015-05-16
  • 2012-01-27
  • 1970-01-01
  • 2023-03-18
  • 2021-10-23
相关资源
最近更新 更多