爱问知识人 爱问教育 医院库

hibernate的 lazy 和 fetch 一般怎么配置?

首页

hibernate的 lazy 和 fetch 一般怎么配置?

hibernate的 lazy 和 fetch 一般怎么配置?hibernate的 lazy 和 fetch 一般怎么配置?hibernate的 lazy 和 fetch 一般怎么配置?

提交回答
好评回答
  • 2019-04-02 20:13:23
      fetch 和 lazy 配置用于数据的查询
    lazy 参数值常见有 false 和 true,Hibernate3 映射文件中默认lazy = true ;
    fetch 指定了关联对象抓取的方式,参数值常见是select和join,默认是select, select方式先查询主对象,再根据关联外键,每一个对象发一个select查询,获取关联的对象,形成了n+1次查询;而join方式,是left outer join查询,主对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。
       在映射文件中,不同的组合会使用不同的查询: 1、lazy="true" fetch = "select" ,使用延迟策略,开始只查询出主对象,关联对象不会查询,只有当用到的时候才会发出sql语句去查询 ; 2、lazy="false" fetch = "select" ,没有用延迟策略,同时查询出主对象和关联对象,产生1+n条sql。
       3、lazy="true"或lazy="false" fetch = "join",延迟都不会作用,因为采用的是外连接查询,同时把主对象和关联对象都查询出来了。 另外,在hql查询中,配置文件中设置的join方式是不起作用的,而在其他查询方式如get、criteria等是有效的,使用 select方式;除非在hql中指定join fetch某个关联对象。
      fetch策略用于get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。 配置还是缺乏灵活性的,开发中常会有不同的需求,所以在配置中选择默认值,在具体业务中来指定策略。再者对数据库的操作都是使用SQL来执行的,掌握了sql执行性能反过来看这些配置也许很容易了。
       我对Hibernate、SQL也都只是了解水平,还需进一步深入学习,以上只是个人的看法。

    P***

    2019-04-02 20:13:23

其他答案

    2019-04-02 20:31:28
  • lazy默认为true也就是延迟加载一般就设置为true就行了 不然会很影响速度
    至于fetch你可以不用管它

    M***

    2019-04-02 20:31:28

  • 2019-04-02 20:03:50
  •   整点通俗易懂的不好吗?
    hibernate 配置文件的lazy 和 fetch 
    lazy :配置属性是否查询要延迟加载?参数true/false 默认为true 目的是优化hibernate性能
    hibernate是数据库表 映射成 javaPOJO对象 在数据库表为主外键关系时,也就是 1:N 关系 在双向关联的时候 1的对象里面有个set集合存放所有符合1对象外键的N对象  在查询1的一方会同时返回一个N一方set列表 如果是true则推迟加载(在真正访问到set列表里的对象时 才去加载)false则是一次性都加载进来 如果数据量很多会导致session缓存(hibernate一级缓存)过大而导致内存溢出 所以需要进行懒加载设置。
       fetch :是配置hibernate的在查询时的抓取方式 参数select/join select:是不级联查询,不查外键表 N+1次查询方式 join:是级联查询 一条SQL查询返回主外键两张表 。

    每***

    2019-04-02 20:03:50

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 179-198
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):