hibernate一级缓存:
属于session级别的缓存,保存的是实体对象。session关闭(或者调用session的clear方法清空对象)则对象消失。
Query中的list和iterater方法对一级缓存的利用情况:
通过调用list方法,所有满足条件的对象都被查询出来并加载到一级缓存当中。但是再次调用list方法的时候不会利用一级缓存,仍然是发出SQL语句去数据库查询。
调用iterater方法的时候,将所有满足条件的对象的数据库标识(就是ID)查询出来,然后通过遍历Iterator来拿到想要的对象(每拿一个对象都会通过数据库标识去发出SQL查询数据库),拿出来的对象也被保存到一级缓存当中,当再调用iterater方法的时候,会利用一级缓存,存在的对象就不再发SQL去数据库查询。