zoukankan      html  css  js  c++  java
  • Hibernate中get find load iteator 的区别与联系

    find,iterator
    (1)iterator首先会获取符合条件的记录的id,再跟据id在本地缓存中查找数据,查找不到的再在数据库中查找,结果再存在缓存中。N+1条SQL。
    (2)find跟据生成的sql语句,直接访问数据库,查到的数据存在缓存中,一条sql。

    如果找不到符合条件的纪录,get()方法将返回null.
    如果找不到符合条件的纪录,find()方法将返回null.
    如果找不到符合条件的纪录,load()将会报出ObjectNotFoundEcception.

    get()方法会忽略二级缓存,若内部缓存没有查询到会到数据库中去查询 .
    find()方法会忽略二级缓存,若内部缓存没有查询到会到数据库中去查询 .
    load()方法可以充分利用hibernate的内部缓存和二级缓存中的现有数据 .

    get()方法返回真实的实体类 .
    find()方法返回真实的实体类 .
    load()方法可以返回实体的代理类 .

    load()会因所要查询的对象类的映射文件中设置的检索策略,而实现立即检索或延迟检索。
    get()方法和find()方法却不受这种控制,它们总是会执行立即检索。

    那么get与find的区别在哪?我们就不讨论了,在以后的版本中find方法就消失了

    来源:http://zhidao.baidu.com/question/143397568.html

  • 相关阅读:
    lvs_基础理论
    iptables_表和链(Traversing of tables and chains)
    题解-【集训队作业2018】Simple Tree
    题解-CF559C
    题解-[Violet]天使玩偶/SJY摆棋子
    题解-[POI2014]PRZ-Criminals
    题解-CF961G
    题解-CF1392H
    WorldCreator基础流程
    gstreamer-vaapi 之 README
  • 原文地址:https://www.cnblogs.com/langtianya/p/3066137.html
Copyright © 2011-2022 走看看