1
有什麼意義,或者使用休眠,如連接表的優點:hibernate - 關係的定義 - 爲什麼?
@OneToMany
@ManyToOne
@ManyToMany
@JoinColumn
如果有在數據庫級別上定義的關係?
有什麼意義,或者使用休眠,如連接表的優點:hibernate - 關係的定義 - 爲什麼?
@OneToMany
@ManyToOne
@ManyToMany
@JoinColumn
如果有在數據庫級別上定義的關係?
主要有兩個優點:
如果能夠持久對象之間進行導航:
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就足夠了。
啊哈,這很有道理。我曾經習慣於映射數據庫視圖並使用它們,但是如果我現在想它,這太複雜了。這聽起來好多了。謝謝 – gaffcz
正如我發現的那樣,如果關係映射到實體中,則從Order order where ...中選擇address.street應該足夠了。事實上,如果你想:-)加入它不起作用(看這[鏈接](http://stackoverflow.com/questions/10995993/hibernate-iterating-query)) – gaffcz
它與連接完美地工作。你只需要瞭解查詢返回的內容。如果您選擇address.street只選擇街道,並返回'List'。如果沒有select子句,我從不使用HQL,因爲它清楚了查詢返回的內容。 –