2011-06-06 58 views
0

我有一个关于Hibernate双向的问题。可以说我有2个类,Class AClass B和双向相关。这意味着当我查询Class A时,我也可以得到Class B,反之亦然。我的问题是如何冬眠工作时,我这样做休眠双向查询

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

我知道我能得到ClassB只有classA.getClassB();,但我还可以得到classA.getClassB().getClassA().getClassB().getClassA().getClassB()...;

可以给我这样的人解释如何冬眠双向查询工作?

我很关心性能。

回答

0

Hibernate使用了一个高效的一级缓存,也被称为PersistantContext 如果一个对象被加载到上下文中,hibernate不会命中数据库来获取相同的对象。

在调用findClassAById(1)时的问题陈述中classA对象被加载到持久性上下文中。 classB根据采用的延迟加载/热切加载策略,同时或稍后加载对象。在此之后,数据库不应该被所有未来呼叫理想地击中。

你可以很好地谷歌坚持上下文获取更多关于它如何工作的信息。