Mamy w hibernate coś takiego
http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#hql-implicit-join
czyli można sobie przechodzi po kropce przez relacje, jednak to generuje jakiegoś kiepskiego SQL'a
Dla HQL
SELECT sd.num, sd.owner.name
FROM SaleDocument sd
WHERE sd.owner.name = :name
mamy SQL
SELECT sd.num, o.name
FROM SALE_DOCUMENT sd, OWNER o
WHERE sd.ID_OWNER = o.ID_OWNER AND o.name =?
gdzie są inner/outer joiny w sytuacji kiedy w tabeli SaleDocument mam 70 lmn wierszy to przejoinowanie tego to jakas masakra, koszta zapytania 140 tys
a dla HQL
SELECT sd.num, o.name
FROM SaleDocument sd JOIN sd.owner o
WHERE o.name = :name
mamy SQL
SELECT sd.num, o.name
FROM SALE_DOCUMENT sd INNER JOIN OWNER o ON sd.ID_OWNER = o.ID_OWNER
WHERE o.name =?
koszt zapytania 70 czyli 2000x lepiej baza PostgreSQL, oczywiście SQL są bardziej skomplikowane ale prezentują problem
Czy korzystacie z Implicit joins (path expressions) ?? Bo z naszych doświadczeń zawsze lepiej pisać joiny jawnie....