1.返回的类型不一样,list()返回List,iterate()返回Iterator。
2.获取数据的方式不一样,list()直接查询数据库,iterate()会先到数据库中把ID都取出来,查询非ID数据时,会先到缓存中找,没有则以ID为条件发送sql到数据库检索,所以查询次数为N+1.
3.iterate会查询二级缓存,list只会查询一级缓存。
4.list()中返回的是实体对象,iterate()中返回的是代理对象。
5.list()执行时,直接运行所需要的查询语句,iterator()则是先执行得到对象ID的查询,然后根据ID取得所需。
总结:list()查询通常只会执行一个SQL语句,而iterator()查询则可能需要执行N+1条SQL语句(N为结果集中的记录数)。
本文对比了list()和iterate()两种数据获取方式的不同之处,包括返回类型、获取数据方式、缓存查询级别及执行过程等。list()查询执行一次SQL即可获取全部数据,而iterate()可能需要执行N+1次SQL来逐步获取数据。

2845

被折叠的 条评论
为什么被折叠?



