10.get&load、list&iterate区别

get&load方法的区别

代码

输出结果

由上面结果可以看出,使用get方法会立即执行一条查询语句,并将查询数据返回。

而load方法没有执行查询语句,是因为load方法的延迟查询策略,只有在你用到数据的时候才会执行查询。我们在load方法后添加一条语句,

这样我们就用到了这个对象,所有会执行一条SQL语句

来查询数据,因为我们这里输出了这个对象,所以会做输出。

总结:

    get方法立即查询,会立即向数据库提交一条查询语句,来查询数据

    load方法延迟查询,在你用到数据的时候才会提交sql语句进行查询。


list&iterate区别
List方法是立即查询,执行后发送sql语句到数据库,执行查询并返回结果。
Iteate方法是延迟查询,会先执行一条SQL语句,只查询主键那列,当你用到某条数据的时候,才会发送一条sql语句,来根据主键查询数据。有的也叫n+1查询,1指的是查询所有主键的sql语句,n指的是根据主键查询数据,iteate与load方法一样,只有用到的时候才去查询。
 总结:
  List虽然每次查询都会发送SQL语句到数据,查询数据,但是List会将查询数据,写入Session缓存。这也说明list方法是写缓存,但是不读取缓存,因为List方法每次都会查询数据。
 Iteate是,读写缓存,因为他只查询一次,如果你先使用List了,在使用Iteate方法。Iteate方法会先查询所有主键,拿着主键到缓存中找数据,如果没有数据则查询,否则直接从缓存中读取数据。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值