有没有办法用 Hibernate 延迟加载对象(仅加载 id)?
我正在编写一个同步代码,它会同步一个巨大的数据库。我们正在尝试对其进行优化,目前的瓶颈是 hibernate 通过缓慢的连接加载大量不需要的字段。例如:
Person p = createPersonFromOtherDbData(params);
Address a = loadAddressFromLocalDB(p.getAddressParams());
p.setAddress(a);
session.insert(p);
所以基本上,获取“Address”对象的“id”并将其放入新的“Person”对象中就足够了。但是,hibernate 从 Address 对象加载大量不需要的字段(在同步上下文中不需要,但在应用程序的其余部分需要)。鉴于 session 是无状态的,有什么办法可以优化这部分代码吗?
同意:
我相信这个问题与:Can I set an entity relation with just the ID?有关,但也没有具体答案。
最佳答案
Session.load()
正是您想要的,主要用于实现您的用例:如果地址尚未加载到 session 缓存中,那么它只返回一个地址代理包装 ID。
关于java - 在 hibernate 中延迟加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19652534/