PHPRPC 对 Hibernate 的 lazyLoad 支持

[quote="flyaswish"]PHPRPC 对Hibernate的lazyLoad支持如何? Hessian貌似对这个支持的不好。[/quote]

对于 lazyload 有两种方法,一种是跟你使用 Hessian 时一样,关掉这个特性,哈哈,这等于没说 :wink:

那么我们来说另一种,PHPRPC 对于对象的序列化提供多种可定制性,其中有一种就是它提供了 __sleep 和 __wakeup 这两个魔术方法。通过这两个方法(其实只需要 __sleep 这一个)就可以很好的解决 lazyLoad 问题。那么如何来具体操作呢?

在定义对象类型时,为它增加一个 __sleep 方法,这个方法可以是任意访问级别(private、protected、public 皆可),但是通常,你把它作为 private 或者 protected 的就可以,因为这个方法不会被用来直接调用。

那这个方法做什么呢?这个方法的主要用途就是提供一种在序列化之前可以让你执行一个序列化初始操作的能力,然后返回你要序列化的字段的字段名数组。因此,你应该明白该如何做了吧?对,那就是在这个方法里,将你要传递的字段进行进行载入操作,之后就是返回你要序列化的字段的字段名数组咯。有一点要注意,你返回的这个要序列化的字段的字段名数组应该是固定的,不要有类似于第一次调用返回三个字段,第二次调用返回四个,第三次返回两个这样的情况出现,因为这个结果是会被缓存的。但是这个方法却会在每次通过 PHPRPC 传递这个对象时被执行。

现在好了,你在本地使用这个对象时,你可以仍然享受 lazyload 给你带来的好处,在远程调用时他也不会成为你的麻烦了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值