flex 和hibernate结合,针对延迟加载对象转化处理

本文深入探讨了HibernateAdapter中的序列化机制,特别是在通过Flash Remoting调用远程对象方法的情景下如何处理Hibernate代理对象及集合类型的序列化过程。文章详细介绍了针对不同对象类型的具体序列化实现。
摘要由CSDN通过智能技术生成
HibernateAdapter

 

 

/**
  * Invoke the Object.method() called through FlashRemoting
  */
 public Object invoke(Message message) {
  Object results = null;
  if (message instanceof RemotingMessage) {
   RemotingMessage remotingMessage = (RemotingMessage) message;
   results = super.invoke(remotingMessage);

   // serialize the result out
   try {
    HibernateSerializer serializer = new HibernateSerializer();
    results = serializer.translate(results);
   } catch (Exception ex) {
    ex.printStackTrace();
    RuntimeException re = new RuntimeException(ex.getMessage());
    re.setStackTrace(ex.getStackTrace());
    throw re;
   }
  }
  return results;
 }

 

HibernateSerializer

 

 

public Object translate(Object obj) {
  if (obj == null) {
   return null;
  }

  Object result = null;

  Object key = getCacheKey(obj);

  if (cache.containsKey(key)) {
   return cache.get(key);
  }

  Boolean isLazyProxy = obj instanceof HibernateProxy
    && (((HibernateProxy) obj).getHibernateLazyInitializer().isUninitialized());
  if (isLazyProxy) {
   result = writeHibernateProxy(obj, key);
  } else if (obj instanceof PersistentMap) {
   result = writePersistantMap(obj, result, key);
  } else if (obj instanceof AbstractPersistentCollection) {
   result = writeAbstractPersistentCollection(obj, key);
  } else if (obj instanceof Collection) {
   result = writeCollection(obj, key);
  } else if (obj instanceof Map) {
   result = writeMap(obj, key);
  } else if (obj instanceof Object && (!isSimple(obj)) && !(obj instanceof ASObject)) {
   result = writeBean(obj, result, key);
  } else {
   cache.put(key, obj);
   result = obj;
  }

  return result;
 }

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值