Hibernate对象重复

时间:2012-12-09 21:41:15

标签: hibernate orm

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

现在,我们假设以下情况。我从db中加载一个人,因此我加载了这个人居住的房屋。然后我加载另一个住在同一个家里的人。问题是我正在加载什么:一个新的主对象或为第一个人加载的同一个对象?为什么呢?

1 个答案:

答案 0 :(得分:1)

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

另一方面,你应该注意到Home可能会“懒洋洋地”获取,在这种情况下,只有这个Home的代理(占位符)才会成为两个人的字段。