【问题标题】:Remove Proxy Code from Entity during Serialization在序列化期间从实体中删除代理代码
【发布时间】:2013-07-11 06:27:21
【问题描述】:

我有一个服务器和客户端,它们都是基于 Java 的,并且通过 RMI 相互通信。服务器的数据访问层是用 JPA 和 Hibernate 实现的,实体通常用作参数。

客户端没有 Hibernate 代码并且动态代码下载被禁用,因此当服务器向其客户端发送实体时,必须发送实际实体,而不是代理。此外,实体必须按原样发送,无需预加载所有延迟获取的属性,因为在大多数情况下,客户端永远不需要它们

是否可以用 Hibernate 实现这些要求?

【问题讨论】:

标签: java hibernate jpa


【解决方案1】:

您可以获取查询中的所有属性

来自文档

如果您正在使用属性级别的延迟获取(使用字节码检测),则可以强制 Hibernate 立即使用 fetch all properties 在第一个查询中获取延迟属性。

from Document fetch all properties order by name

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

或者在你的映射中使用 eagle fetch...

【讨论】:

    【解决方案2】:

    我知道的唯一干净的方法(即不获取对象的每个关联)是使用单独的对象层进行数据传输。

    或者,您可以发送由您重新填充的具有必要数据的相同对象类型,而不是使用代理集来休眠对象。

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 2021-12-31
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多