快速业务通道

使用动态代理解决Hibernate序列化,避免延迟加载问题 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ollection proxyCollection = null ;           if (returnType.isAssignableFrom(Set. class )) {            proxyCollection = new LinkedHashSet();         } else   if (returnType.isAssignableFrom(List. class )) {            proxyCollection = new ArrayList();         } else  {            return returnValue;         }          for (Object o : (Collection)returnValue) {            proxyCollection.add( new HibernateBeanSerializer (o).getProxy());         }          return  proxyCollection;       } else {          return  returnValue;       }     }      private  boolean isExclude(MethodInvocation mi, String propertyName)           throws Throwable {        for (String excludePropertyName : excludesProperties) {          if (propertyName.equals(excludePropertyName)) {            return  true ;         }       }        return  false ;     }      private  static String getPropertyName(String methodName) {       String propertyName = null ;        if (methodName.startsWith( "get" )) {         propertyName = methodName.substring( "get" .length());       } else  if (methodName.startsWith( "is" )) {         propertyName = methodName.substring( "is" .length());       } else  if (methodName.startsWith( "set" )) {         propertyName = methodName.substring( "set" .length());       }        return propertyName ==  null ? null : StringUtils.uncapitalize(propertyName);     }   } } package cn.org.rapid_framework.util; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.hibernate.Hibernate; import org.hibernate.collection.PersistentCollection; import org.hibernate.proxy.HibernateProxy; import org.springframework.aop.framework.ProxyFactory; import org.springframework.util.StringUtils; /** * 喘噐Hibernate Object 議會双晒,恵諒决岳紗墮議奉來音氏砺竃LazyInitializationException,遇氏卦 指null峙. * 聞喘: * <pre> * Blog proxyBlog = new HibernateBeanSerializer(blog).getProxy(); * </pre> * @author badqiu * @param <T> */ public class HibernateBeanSerializer <T> { T proxy = null; /**   */ public HibernateBeanSerializer(T object,String... excludesProperties) {  if(object == null) {  this.proxy = null;  }else {  ProxyFactory pf = new ProxyFactory();   pf.setTargetClass(object.getClass());  pf.setOptimize(true);   pf.setTarget(object);  pf.setProxyTargetClass(true);   pf.setOpaque(true);  pf.setExposeProxy(true);   pf.setPreFiltered(true

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号