Hibernate代理序列化和客户端接收

时间:2010-04-18 07:29:01

标签: java hibernate proxy aop cglib

我不了解生成的代理类对象(CGLib增强型POJO)如何传输到远程客户端,并仍然保留其生成Lazy Init的能力。异常。

这是否意味着存在某种类型的契约,某种类(代理)的所有转移对象将再次作为代理重新实例化?客户端在哪里获取这些生成的类?对不起,但我完全不明白。

2 个答案:

答案 0 :(得分:2)

因为您的远程客户端应用程序现在依赖于Hibernate。如果您的远程客户端在类路径上没有Hibernate,您将获得NoClassDefFoundError。这说明了抽象是如何泄漏Hibernate的。

基本上,不要通过网络传递对象 - 传递消息(如果你愿意,可以用它来创建对象)。

答案 1 :(得分:1)

代理未初始化。当他们被转移时,他们会失去他们最初关联的Session。因此,当尝试在远程端初始化它们时,它在逻辑上失败。

您可以使用Hibernate.initialize(aProxy)

在发送前完全初始化它们

有关详细信息,请查看this answer