【发布时间】:2011-03-16 08:22:27
【问题描述】:
eager fetch 和 join fetch 一样吗?
我的意思是急切地获取一个有多个关系是否会触发 2 个查询或单个连接查询?
rails 活动记录如何实现关联的连接获取,因为它不知道第一手的表的元数据(我的意思是表中的列)?比如说我有
人 - id、姓名 事物 - id、person_id、名称
人与事物是一对多的关系。那么它如何生成具有所有列别名的查询,即使当我对人员进行连接提取时它不知道它?
【问题讨论】:
-
和“includes”类似于 jpa/hibernate 中的 join fetch
-
Hibernate 既有 Eager fetch 也有 join fetch。它们之间有区别吗?
-
(自休眠以来已经有一段时间了,但我认为)“eager fetch”意味着您告诉 Hibernate“立即将对象实例加载到内存中”,“join fetch”是一种快捷方式(只是像“包含”),它允许您在单个查询/句子中定义您希望在返回时也加入和获取多级关联。在 ActiveRecord 中,“eager join fetch”将是:'People.includes(:things).all'('all' 现在将它们拉入内存,而不是等待它们被迭代。)
标签: sql ruby-on-rails orm activerecord