Hibernate14-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方法会先查询所有主键,拿着主键到缓存中找数据,如果没有数据则查询,否则直接从缓存中读取数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,607评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ...
    杂货铺老板阅读 1,424评论 0 2
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 3,852评论 0 8
  • 很多人把设计原则都想得很复杂,还别说,它真的挺复杂,但是对我来说它就是四点: ·清晰 ·流畅 ·统一 ·美观 重要...
    昕火乐阅读 530评论 0 0