Hibernate 中延迟加载和立即加载的区别


延迟加载和立即加载是 Hibernate 和 Eclipse Link 等 ORM 框架中的两种数据加载策略。当一个实体类引用其他实体(例如,员工和电话)时,我们会使用这些数据加载策略。

延迟加载 - 只有在显式调用 getter 方法或 size 方法时才会加载关联数据。

  • 当使用一对多集合时,使用延迟加载。
  • 当确定不使用相关实体时,使用延迟加载。

立即加载 - 在加载父实体时,同时加载数据。

  • 当关系数量不多时,使用立即加载。因此,立即加载是减少服务器额外查询的好方法。
  • 当确定始终需要使用与主实体相关的实体时,使用立即加载。
序号关键点延迟加载立即加载
1
获取策略
在延迟加载中,只有在显式调用 getter 方法或 size 方法时才会加载关联数据。
在立即加载中,在加载父实体时同时加载数据。
2
ORM 层中的默认策略
多对多和一对多关联默认使用延迟加载策略。
多对一和一对一关联默认使用延迟加载策略。
3
加载配置
可以使用注解参数启用它

fetch = FetchType.LAZY
可以使用注解参数启用它

fetch = FetchType.EAGER
4
性能
初始加载时间比立即加载小得多
加载太多不必要的数据可能会影响性能

更新于:2019年11月18日

14K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告