开篇需要说明一下,hibernate懒加载机制,并不是绝对依赖于cglib的,具体请看代理工厂ProxyFactory,hibernate为该代理工厂提供了四种实现,分别是CGLIBProxyFactory,Dom4jProxyFactory,JavassistProxyFactory,MapProxyFactory,其中CGLIBProxyFactory已经废弃了,默认使用的是JavassistProxyFactory,该实现依赖于javassist组件。
下面,我将自己整理的,hibernate中关于懒加载关键部分的实现Demo展示出来,希望能帮助大家理解。
1. 对象懒加载器
package com.demo.hibernate.proxy;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.util.ReflectHelper;
import com.demo.hibernate.bean.Event;
import javassist.util.proxy.MethodFilter;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyFactory;
import javassist.util.proxy.ProxyObject;
/**
* 对象懒加载器