我有一些这样的代码(不是我制作的):
if (query.list() != null && !query.list().isEmpty())
resultObj = (MyObject) query.list().get(0);
当它以这种方式调用
query.list()
三次时会发生什么?
它是否会联系数据库三次,或者在第一次之后是否会以某种方式阻止再次调用数据库?
如果
query
是一个查询对象,那么 Hibernate 文档 here 状态
通过调用 list()、scroll() 或 iterate() 来执行查询。后续调用可以重新执行查询。然而,它的生命周期受到创建它的会话生命周期的限制。
所以我确实假设数据库被查询了三次。
但是什么阻止你将它保存在 if 之前的变量中呢?也会干净很多。