java - 在 hibernate 中延迟加载对象

标签 java hibernate optimization lazy-loading

有没有办法用 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/

相关文章:

java - 获取 "XQueryException",意外的 token 语法错误

java - 尝试使用 REST 生成 JSON 时出现 HTTP 500 错误

java - Spring安全配置错误/WEB-INF/applicationContext.xml并且没有名为springSecurityFilterChain的bean

java - Spring boot + Envers ClassNotFoundException

javascript - API/应用程序设计 : Replace with very large array with a new array or modify the existing array

java - 如何通过负载测试优化 JVM & GC

performance - 加速 Redshift COPY 加载

java - Struts2 在 JSP 中从 session 映射迭代

java - QueryDSL 排序不适用于 Spring Data

java - Spring @Transactional 注解问题