2

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

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

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

4

2 回答 2

0

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

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

于 2013-07-22T11:41:50.193 回答
0

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

来自文档

如果您正在使用属性级别的惰性获取(使用字节码检测),则可以强制 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 ...

于 2013-07-12T16:54:22.727 回答