在 hibernate中如 many-to-one 中如果用到lazy="no-proxy" 网上说必须要经过运行期字节码增加,延迟加载才有效果
那这个“运行期字节码增加”是什么意思 帮忙解释一下 举个例子 谢谢!

解决方案 »

  1.   

    no-proxy:这种懒加载特性需要对类进行增强,使用no-proxy,其关联对象不是代理类http://blog.csdn.net/youjianbo_han_87/archive/2009/06/16/4272190.aspx
      

  2.   

    字节码增强是一种基于你的配置和定义,在运行时修改代码的技术。有一个通用的代码创建库cglib,它允许延迟加载一个实现类,从而避免创建一个需要延迟加载的类型。Spring,iBatais,Hibernate这些框架都使用了这种技术,即所谓的动态代理。动态代理有两种方式:
    1)如果需要代理的类实现了一个接口,那么这些框架就在运行时使用reflect反射机制来创建一个实现了此接口的类作为代理类。
    2)如果这个类没有实现任何接口,那么就会使用cglib库提供的方法来动态创建一个此类的子类作为代理类。其实也是使用了反射机制。cglib就是处理第二种情况的一个通用框架。
      

  3.   

    #3谢谢 那个这个lazy="no-proxy" 实际中应该怎么去用呢,把 cglib.jar加上去就可以了吗 好像这样还是没什么效果,查询的之后还是能将关联的对象级联出来