Imagínese una mesa emp:JPA ¿Optimización de consultas al evitar JOIN para buscar tabla?
CREATE TABLE emp
(id NUMBER
, name VARCHAR
, dept_code VARCHAR
)
y una tabla dept :
CREATE TABLE dept
(code VARCHAR
, name VARCHAR
)
emp.dept_code
referencias dept.code
como ForeignKey.
Estas tablas se asignan a entidades JPA, y el ForeignKey se modela como una asociación:
@ManyToOne
@JoinColumn(name = "dept_code")
private Department department;
Teniendo en cuenta los siguientes datos:
emp dept
---------------- ------------------
1 John SALS SALS Sales
2 Louis SALS SUPT Support
3 Jack SUPT
4 Lucy SUPT
me gustaría escribir una consulta JPA que devuelve todos Emloyees en el Departamento de Soporte. Asumo que sé PrimaryKey del Departamento de Apoyo (SUPT
)
supongo que sería:
SELECT emp
FROM Employee emp JOIN emp.department dept
WHERE dept.code = 'SUPT'
Pregunta:
A medida que la clave de código Departamento SUPT
está disponible en el emp tabla, ¿hay alguna manera de volver a escribir la consulta JPA al evitar el UNIRSE a la Entidad del Departamento?
¿Esto daría como resultado una mejora en el rendimiento? ¿O es una implementación de JPA (como Hibernate) lo suficientemente inteligente como para evitar que la base de datos se una a la dept tabla?