Hibernate延迟加载的原理
Hibernate延迟加载的原理:
当hibernate设置为 延迟加载策略时 .查询后返回的是代理类的实例:
代理类的特征:
1. 有hibernate 在运行时动态生成.它扩展了持久化类.因此实现了持久化类的所有属性和方法.它的实现对应用程序是透明的(也就是应用程序看不到这个代理类
2,hibernate创建代理类的实例.仅仅初始化它的 OID 属性
3,当应用程序第一次访问代理类的属性时就会初始话代理类的其他属性.(除了访问OID 属性,因为OID已经初始话没有必要再到数据库里去查.)
get() 方法 总是立即加载. 这也是 get() 同 load()的一个区别. 还一个区别是 如果数据库中没有结果get()回 null 而load();会报错