Wyobraź sobie stół EMP:Optymalizacja zapytania JPA przez unikanie JOIN do tabeli odnośników?
CREATE TABLE emp
(id NUMBER
, name VARCHAR
, dept_code VARCHAR
)
i stół dept:
CREATE TABLE dept
(code VARCHAR
, name VARCHAR
)
emp.dept_code
referencje dept.code
jak ForeignKey.
Tabele te są przypisane do podmiotów WZP i ForeignKey jest modelowany jako stowarzyszenie:
@ManyToOne
@JoinColumn(name = "dept_code")
private Department department;
Biorąc pod uwagę następujące dane:
emp dept
---------------- ------------------
1 John SALS SALS Sales
2 Louis SALS SUPT Support
3 Jack SUPT
4 Lucy SUPT
chciałbym napisać zapytanie WZP zwracającej wszystko Pracownicy w dziale wsparcia. Zakładamy wiem PrimaryKey Departamentu Wsparcia (SUPT
)
myślę, że byłoby:
SELECT emp
FROM Employee emp JOIN emp.department dept
WHERE dept.code = 'SUPT'
Pytanie:
jako klucz kod departamentu SUPT
jest dostępny w emp tabela, czy istnieje sposób na przepisanie zapytania JPA przez uniknięcie DOŁĄCZ do jednostki wydziałowej?
Czy spowodowałoby to poprawę wydajności? Czy też implementacja JPA (np. Hibernate) jest wystarczająco inteligentna, aby uniknąć dołączenia bazy danych do tabeli dept?