首页 > 代码库 > Hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别

Hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别

精妙的例子

Child   <-   many-to-one   ->Parent   
  class   Child   {   
      private   Parent   parent;   
    
      public   Parent   getParent   (){   
          return   this.parent;//访问了实例变量   
      }   
        
  }   
    
  class   Parent   {   
      private   String   name;   
    
      public   String   getName(){   
          return   this.name;//访问了实例变量   
      }   
      public   void   f(){   
          System.out.println("invokeing   f()");//没有访问实例变量   
      }   
  }   

如果   many-to-one  

的lazy设为proxy,当child.getParent().getName()或child.getParent().f()时,parent都
会被抓取,若设为no-proxy,调用child.getParent().f()时,parent是不会被抓取的,同时这种方式需要编译时字节码增
强,否则和proxy没区别。

@Copy of this post、《此帖为bing拷贝》

Hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别