我在 nhibernate.cfg.xml 文件中设置了类缓存。
当我通过 Id 获取我的实体时,一旦加载了对象,我就看不到 SQL 请求。
但是当我使用条件获取实体时,总是有 SQL 查询......
编辑:
我想这回答了我的问题:
http://www.javalobby.org/java/forums/t48846.html
假设我们想根据比直接按 ID(例如按名称)更复杂的查询来查找条目。在这种情况下,Hibernate 仍然必须发出一条 SQL 语句来获取查询的基本数据集。因此,例如,此代码:
查询 query = session.createQuery("from Person as p where p.firstName=?"); query.setString(0, "约翰"); 列表 l = query.list(); ... 将调用单个选择(假设我们的关联被缓存)。
select * from Person where firstName='John' 这个单一的选择将返回'1',然后缓存将用于所有其他查找,因为我们已经缓存了所有内容。这个强制性的单选是查询缓存的来源。