举个例子:
Object vo = org.apache.commons.beanutils.BeanUtils.cloneBean(po);
在执行这个语句时,po 中原来是 “lazy=true”的那些属性就全部被加载了。
可是这些属性对我来说现在是根本就不需要的啊。如何才能让它不加载那些属性呢?
clone当然会保留原来object的属性了
手动设置那些属性为null
cloneBean()
所执行的应该是深度拷贝
手工做po->vo的转换,不用的属性就不要赋值,就行了,用BeanUtils.cloneBean带来便利的同时也失去了部分自由,这就是生活。
hibernate中lazy=true是在关联数据第一次被访问时进行加载的,你通过BeanUtils.cloneBean()的时候BeanUtils对所有的属性进行了复制,调用了po延迟加载的getter,所以会造成lazy=true的属性被加载,有延迟加载属性的po不要通过BeanUtils.cloneBean()来复制,可以通过BeanUtils.copyProperty复制指定的属性或者干脆自己手动来复制