5
想象一个表EMP:JPA通过避免JOIN查询表来优化查询?
CREATE TABLE emp
(id NUMBER
, name VARCHAR
, dept_code VARCHAR
)
和一张桌子部门:
CREATE TABLE dept
(code VARCHAR
, name VARCHAR
)
emp.dept_code
引用dept.code
作为一个ForeignKey。
这些表映射到JPA实体和ForeignKey的建模为关联:
@ManyToOne
@JoinColumn(name = "dept_code")
private Department department;
鉴于以下数据:
emp dept
---------------- ------------------
1 John SALS SALS Sales
2 Louis SALS SUPT Support
3 Jack SUPT
4 Lucy SUPT
我想编写一个JPA查询,返回所有在支持部门的员工。假设我知道技术支持部门的的PrimaryKey(SUPT
)
我想这将是:
SELECT emp
FROM Employee emp JOIN emp.department dept
WHERE dept.code = 'SUPT'
问:
由于部门关键SUPT
代码可在emp表,有没有一种方法来重写JPA查询避免加入到部门实体?
会导致性能改善吗?或者是一个JPA实现(如Hibernate)足够聪明,以避免数据库加入部门表?