Hibernate “N+1”查询问题
Hibernate 默认情况下使用立即检索策略,即从数据库加载A对象时 会同时加载跟它关联的B,这样产生了不必要的对象集合查询,而且本来可以合并的sql要执行1+N次,因为一条select出所有的A之后,会针对A中每条数据在B检索。
所以Hibernate 提出了两种检索策略改变这种问题:
1:延迟检索:
H3 避免加载多余的关联对象,设置lazy=true;这样 不会立刻查询关联对象,只有当需要关联对象时才查询。
session.find("from A as c")
2:外连接查询:
-->left outer join
-->set FetchMode(FetchMode.JOIN)
-->映射文件定义连接抓取方式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步