美文网首页
Hibernate14-get&load、list&am

Hibernate14-get&load、list&am

作者: 我相信你爱过gg | 来源:发表于2017-05-07 21:20 被阅读11次

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

    相关文章

      网友评论

          本文标题:Hibernate14-get&load、list&am

          本文链接:https://www.haomeiwen.com/subject/cidptxtx.html