0

假设我已经用多对多关系连接了数据库中描述的图。每个数据库行都反映到Node具有属性的类上Linked,该属性指向所有其他链接节点。

如果我load()来自数据库的任何节点,Hibernate 会将所有其他节点级联加载到内存中吗?如果不是,那么它将如何填充Linked指向未加载节点的属性?

4

1 回答 1

0

负载 javadoc说:

返回具有给定标识符的给定实体类的持久实例,假设该实例存在。当访问非标识符方法时,此方法可能会返回按需初始化的代理实例。

Hibernate(如果未另行指定)将延迟加载实例并代理它们,因此当您尝试访问字段时,代理将从您的数据库中获取值。

在您的特定情况下, Linked 属性将主要指向具有延迟加载属性的代理。Hibernate 使这不会在一个查询中加载整个数据库(或者在这种情况下,您的加载方法)。

于 2012-10-03T17:13:37.153 回答