一级缓存也叫Session缓存,以下对一级缓存做个总结(以下操作均为在同一Session进行)
操作 | 一级缓存是否起作用 |
load,get | Y |
运用HQL语句获取实体,通过Iterator进行读取 | Y |
运用HQL语句获取实体某一普通属性,通过Iterator进行读取 | N |
运用HQL语句获取实体,通过List进行读取 | N |
运用HQL语句获取实体某一普通属性,通过List进行读取 | N |
备注
1.当运用Itertor进行实体读取的时候,要注意n+1的问题(iterator会先读取符合条件的所有id值,然后再对每个id值所对应的实体进行查询)
2.可以运用session.evict(Object object)与session.clear()方法进行缓存释放