为false的时候表示不延迟加载,就是只要用一个东西,其他的和这个东西有关的都查出来,为true的时候就是等到用的时候再查

解决方案 »

  1.   

    打个比方吧,某条记录里面有一个字段是外键,如果lazy="true"的话就会把外键中的字段也找出来,这样如果外键多的话,很可能搜索一条记录就会连带拉出很多子记录。但是有时候我们要的只是一条记录,于是就可以设置lazy="false",这样就不会把子记录也一起带出来了。
      

  2.   

    lazy="false"不延迟加载,在查询当前对象的时候,把当前对象所有的属性都查询上来:但此时可能这个对象的一些属性你用不到,这样都查上来比较耗内存,如果设置lazy="true"的话,那么这个属性只用用到的时候hibernate才会帮你查上来(要保证当前session不要关闭)。
      

  3.   

    hibernate 的立即检索(lazy=false)策略,就是在hibernate在数据库中取得字段值组装好一个对象后,回立即再从数据库取数据组装此对象所关联的对象,如果这个关联对象还有关联对象,则再组装关联对象
      

  4.   

    先谢谢大家了
    那最后问一下
    在做项目中这个属性用的多少
    现在我是报错报的
    一见到many-to-one就加上lazy="false"
    请问大侠们这个用的是这么频繁吗?
      

  5.   

    大家都说完了,我就补充点概念性的东西吧
    hibernate lazy策略可以用在:
                <class>标签上,取true,false值
                <property>标签上,取true,false,当在这个属性上面使用lazy时,需要增强类
                <set><list>上,取false,true,extra
               <one-to-many><many-to-one>单端关联上,取false、proxy、noprozy 默认proxy概念:只有真正使用该对象时,才会创建,对hibernate而言,真正使用的时候才会发出,hibernate支持lazy策略只有在session打开的状态下才有效你见到many-to-one就报错报的什么错呢? 一般情况下不会出现这样的问题的,可能是你的映射文件有问题。
    lazy使用不是特别多,当出现下面所出现的情况的时候,就很好用了,可以提高应用的性能。
      

  6.   

    SET节点才能为true的吧!!!!
      

  7.   

    lazy = "true" 时返回的是CGLIB的代理类,所以就不在支持多态查询了。就可能会报类型上传相关的错误。