您的位置:首页 > 其它

Hibernate中list()与iterator()的区别

2010-05-21 13:21 405 查看
首先两种最大的区别就是利用缓存上的区别.

list只能利用查询缓存(session.setCacheable(true).list());无法利用二级缓存.

注意:Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。

譬如:SELECT c.id, c.name FROM Cat AS c WHERE c.name = 'you' ;不会填充缓存.

虽然list不能利用二级缓存,但是可以把查询到的对象写入二级缓存.



iterator 会利用二级缓存

iteratro()的查询过程



SELECT id FROM cat;

SELECT * FROM cat WHERE id = ?;

SELECT * FROM cat WHERE id = ?;

SELECT * FROM cat WHERE id = ?;

......



因为list一次把所有数据取出来,它不会先去取主键,所有利用不了二级缓存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: