请帮助我了解在哪里使用常规JOIN和JOIN FETCH。
例如,如果我们有这两个查询
FROM Employee emp
JOIN emp.department dep
和
FROM Employee emp
JOIN FETCH emp.department dep
它们之间有什么区别吗?如果是,何时使用哪个?
在这两个查询中,你正在使用JOIN查询与至少一个部门关联的所有员工。
但是,不同之处在于:在第一个查询中,你仅返回hibernate的Employes。在第二个查询中,你将返回员工和所有关联的部门。
因此,如果你使用第二个查询,则无需执行新查询即可再次命中数据库以查看每个员工的部门。
当你确定需要每个员工的部门时,可以使用第二个查询。如果不需要部门,请使用第一个查询。
如果你需要应用一些WHERE条件(你可能需要),我建议你阅读此链接:如何正确地将JPQL“ join fetch”和“ where”子句表示为JPA 2 CriteriaQuery?
更新资料
如果你不使用,fetch
并且继续返回部门,那是因为你在雇员和部门(a @OneToMany
)之间的映射设置为FetchType.EAGER
。在这种情况下,任何带有fetch
或不带有HQL的查询FROM Employee
都会带到所有部门。请记住,默认情况下所有映射* ToOne(@ManyToOne
和@OneToOne
)均为EAGER。
请帮助我理解在哪里使用常规连接以及连接在哪里提取。 例如,如果我们有这两个查询 而且 它们之间有什么区别吗?如果是,何时使用哪一种?
问题内容: 我知道JPA 2是一个规范,而Hibernate是ORM的工具。另外,我了解到Hibernate具有比JPA 2更多的功能。但是从实际的角度来看,真正的区别是什么? 我有使用iBatis的经验,现在我想学习Hibernate或JPA2。我拿起Pro JPA2书籍,并且一直指“ JPA提供者”。例如: 如果您认为某个功能应该被标准化,则应该大声疾呼并向您的JPA提供者提出要求 这使我感到
问题内容: Hibernate和Spring Data JPA之间的主要区别是什么?什么时候不应该使用Hibernate或Spring Data JPA?另外,Spring JDBC模板何时可以比Hibernate / Spring Data JPA更好地执行? 问题答案: Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。没有JPA提供程序,Sprin
问题内容: 和之间有什么区别?我可以举个例子吗? 问题答案: 逐个查询放置一行,同时生成笛卡尔乘积并对其进行子集化-完全不同的操作。琐碎的例子: 的类似的琐碎示例:
Hibernate和Spring数据JPA之间的主要区别是什么? 我们什么时候不应该使用Hibernate或Spring数据JPA? 此外,何时SpringJDBC模板可以比Hibernate和SpringDataJPA性能更好?
问题内容: 这个问题已经在这里有了答案 : “泪神经联接”和“尿素联接”有什么区别? (27个答案) 7年前关闭。 内部联接和外部联接之间的区别。我正在使用两个表,并希望从两个表中获取数据,因此我们应该使用拥有哪种类型的连接来解决我们的问题 问题答案: 内部联接-使用任一等价查询的内部联接给出两个表的交集,即它们共有的两行。 左外部联接-左外部联接将给出A中的所有行,以及B中的所有常见行。 完全外