在正式说hibernate延迟加载时,先说说一个比较奇怪的现象吧:hibernate中,在many-to-one时,如果我们设置了延迟加载,会发现我们在eclipse的调试框中查看one对应对象时,它的内部成员变量全是null的(因为这个原因我还调了好久的代码!),贴张图给你们感受下:

左边是设置延迟加载的调试图,右边是没设置延迟加载的示意图;

平面设计培训,网页设计培训,美工培训,游戏开发,动画培训                 平面设计培训,网页设计培训,美工培训,游戏开发,动画培训

ok,估计大家也理解我说什么了,下面就从这个现象进作为入口,阐述hibernate延迟加载背后的原理----动态代理。

一、hibernate的延迟加载与动态代理

  1、hibernate中的延迟加载:get VS load

    我们知道,在hibernate方法中,直接涉及到延迟加载的方法有get和load,使用get时,不会延迟加载,load则反之。另外,在many-to-one等关系配置中,我们也可以通过lazy属性设置是否延迟加载,这是我们对hibernate最直观的认识。

  2、现象解释----动态代理机制

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式