hibernate上的积极优化:getassociation (). getid()



我经常有这样的使用场景:

实体A通过1—1关系连接到实体B,

在代码中,我经常简单地使用a *和A.getB().getId(),我从不使用B()的任何其他属性,由于B的Id实际上已经存储在表A中,所以我不必加载但是hibernate总是在看到getB()时创建JOIN或SELECT。如果B表很大,或者它有自己的关联,这是一个大问题

是否有一种方法来优化这个特殊的用例?

谢谢杨

我认为这是不可能的,因为Hibernate不知道getId()方法做什么:它可能只是返回ID(这可能是99%的情况),但它也可以转换它,有一些副作用,在某处记录一些消息,等等。

我不完全确定,但我认为您可能会将表A中的B_ID列映射为基本列(除了将其映射为连接列外),前提是您将该列标记为不可插入和不可更新。如果我是正确的,您可以调用a.getBId()来获取B的ID,而无需惰性加载B。

Hibernate一对一:getId()而不获取整个对象

http://javaprogrammingtips4u.blogspot.com/2010/04/field-versus-property-access-in.html

基本上你需要把注释放在getId()上,而不是私有的Integer Id。

对于XML映射文件而言,您只需要在类

的标记中添加access="property"

最新更新