1

例如,我有以下两个表的数据库:Home 和 Person。这些表之间存在一对多的关系。许多人住在一个​​房子里。

现在,假设以下情况。我从数据库加载一个人,结果我加载了这个人居住的房子。然后我加载另一个住在同一家的人。问题是我正在加载什么:一个新的家庭对象或为第一人加载的相同对象?为什么?

4

1 回答 1

1

同一个 Home 对象。Hibernate 通过 PRIMARY KEY 跟踪它已经拥有哪些对象,当 Person 构造函数来填充 Home 时,将使用对现有对象的引用。

另一方面,您应该注意 Home 可能会“懒惰地”获取,在这种情况下,只有这个 Home 的代理(占位符)将是两个 Person 的字段。

于 2012-12-09T22:01:22.797 回答