研究Hibernate源码,对hibernate如何使用cglib优化反射操作感兴趣:
分析结果:
1. 获取resultset后,创建VO类 ,FastClass.create(clazz);
2. 使用 bulkbean创建优化器, net.sf.cglib.beans.BulkBean,是个批量设置属性值的类:
BulkBean optimizer = BulkBean.create(clazz, getterNames, setterNames, types);
3. 创建VO类实例 :
Object instance = fastClass.newInstance();
4. 用优化器批量设置VO实例的属性:
optimizer.setPropertyValues( instance, optimizer.getPropertyValues(instance) );
分析结果:
1. 获取resultset后,创建VO类 ,FastClass.create(clazz);
2. 使用 bulkbean创建优化器, net.sf.cglib.beans.BulkBean,是个批量设置属性值的类:
BulkBean optimizer = BulkBean.create(clazz, getterNames, setterNames, types);
3. 创建VO类实例 :
Object instance = fastClass.newInstance();
4. 用优化器批量设置VO实例的属性:
optimizer.setPropertyValues( instance, optimizer.getPropertyValues(instance) );