2012-06-12 32 views

回答

1

主要有兩個優點:

如果能夠持久對象之間進行導航:

order.getProduct().getSupplier().getCompany().getAddress().getStreet(); 

能夠使用的HQL(或標準)連接的查詢:

select address.street from Order order 
inner join order.product product 
inner join product.supplier supplier 
inner join supplier.company company 
inner join company.address address 
where order.id = :id 

在事實上,我認爲關聯是使ORM成爲ORM的原因。沒有它們,你只會得到基本的對象,而不會鏈接到任何其他對象,並且使用JDBC就足夠了。

+0

啊哈,這很有道理。我曾經習慣於映射數據庫視圖並使用它們,但是如果我現在想它,這太複雜了。這聽起來好多了。謝謝 – gaffcz

+0

正如我發現的那樣,如果關係映射到實體中,則從Order order where ...中選擇address.street應該足夠了。事實上,如果你想:-)加入它不起作用(看這[鏈接](http://stackoverflow.com/questions/10995993/hibernate-iterating-query)) – gaffcz

+0

它與連接完美地工作。你只需要瞭解查詢返回的內容。如果您選擇address.street只選擇街道,並返回'List '。如果沒有select子句,我從不使用HQL,因爲它清楚了查詢返回的內容。 –

相關問題