Оптимизация запросов JPA за счет исключения JOIN to lookup table?

Представьте себе таблицу emp :

CREATE TABLE emp
( id           NUMBER
, name         VARCHAR
, dept_code    VARCHAR
)

и таблицу dept :

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) достаточно умен, чтобы избежать присоединения базы данных к таблице dept ?

6
задан Jan 7 September 2010 в 19:06
поделиться