Hibernate双向查询

时间:2011-06-06 08:01:14

标签: performance hibernate

我有一个关于Hibernate双向的问题。假设我有2个课程,Class AClass B并且双向相关。这意味着当我查询Class A时,我也可以获得Class B,反之亦然。我的问题是当我这样做时hibernate是如何工作的

ClassA classA = ClassA.findClassAById(1);
ClassB = classA.getClassB().getClassA().getClassB();

我知道我只能ClassB获得classA.getClassB();,但我也可以获得classA.getClassB().getClassA().getClassB().getClassA().getClassB()...;

有人可以向我解释一下hibernate如何使用双向查询?

我很关心表现。

1 个答案:

答案 0 :(得分:0)

Hibernate采用高效的一级缓存,也称为PersistantContext 如果在上下文中加载了一个对象,则hibernate不会访问数据库以获取相同的对象。

在调用findClassAById(1)的问题语句中classA在持久性上下文中加载了对象。 classB对象同时或稍后加载,具体取决于所采用的延迟加载/急切加载策略。在此之后,不应该为所有未来的呼叫理想地命中数据库。

您可以通过google Persistance Context获取有关其工作原理的更多信息。