我正在使用 Java 持久性 API 开发独立软件。我需要从数据库中获取单个结果和多个结果。我也有几个问题,
第一个是,
我正在使用 query.getResultList(); 方法来检索单个结果和多个结果。我想知道这个方法是否检索整个结果集或结果集的某些部分(比如在执行限制查询时,例如:*SELECT * FROM some_db
.some_table
限制 100 偏移量 120;*)。如果不是,是否会对性能产生严重影响? (在这种情况下,我正在考虑一个在某些表中包含大约 10000 条记录的数据库)
第二个,
使用query.getResultList();和query.getSingleResult();有什么影响
最佳答案
您应该将数据库端和服务器端部分分开。
如果您从 DB 端到服务器端得到 100 行,那么对于后面的服务器端执行来说,您的表有多大并不重要。
因此,我认为您正在尝试理解仅使用一行的
query.getResultList()
的开销。恕我直言,你不应该为此烦恼。基于 docs结果是 0 行时,
query.getResultList()
和query.getSingleResult()
之间的区别似乎很小。
query.getSingleResult()
... if there are no results at all a NoResultException is thrown.
UPD
对于 Persistance API 尝试使用这种方式来创建查询:
getEntityManager().createQuery(查询)
.setFirstResult(offset)//偏移量
.setMaxResults(limit)//限制
.getResultList();
关于java - 正在使用 query.getResultList();方法对性能有严重影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315757/