Hibernate14-get&load、list&iterate区别

get&load方法的区别
代码

Hibernate14-get&load、list&iterate区别_第1张图片

输出结果
Hibernate14-get&load、list&iterate区别_第2张图片

由上面结果可以看出,使用get方法会立即执行一条查询语句,并将查询数据返回。
而load方法没有执行查询语句,是因为load方法的延迟查询策略,只有在你用到数据的时候才会执行查询。我们在load方法后添加一条语句,
这样我们就用到了这个对象,所有会执行一条SQL语句
Hibernate14-get&load、list&iterate区别_第3张图片
来查询数据,因为我们这里输出了这个对象,所以会做输出。
总结:
    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方法会先查询所有主键,拿着主键到缓存中找数据,如果没有数据则查询,否则直接从缓存中读取数据。

Hibernate14-get&load、list&iterate区别_第4张图片

你可能感兴趣的:(Hibernate14-get&load、list&iterate区别)