2012-06-12 3 views

Répondre

1

Il y a deux principaux avantages:

Être capable de naviguer entre les objets persistants:

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

Etre capable d'utiliser des jointures dans HQL (ou critères) requêtes:

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 

En En fait, je dirais que les associations sont ce qui fait qu'un ORM est un ORM. Sans eux, vous obtiendriez seulement des objets basiques, pas liés à d'autres objets, et utiliser JDBC serait suffisant.

+0

Aha, c'est logique. J'avais l'habitude de cartographier les vues de bases de données et de travailler avec elles, mais c'est trop compliqué si j'y pense maintenant. Cela semble beaucoup mieux. Merci – gaffcz

+0

Comme je l'ai découvert, 'select address.street de Order order où ...' devrait suffire, si les relations sont mappées dans des entités. En fait, avec les jointures ça ne marche pas (regardez ceci [link] (http://stackoverflow.com/questions/10995993/hibernate-iterating-query) si vous voulez :-) – gaffcz

+0

Cela fonctionne parfaitement avec les jointures. Vous avez juste à comprendre ce que la requête renvoie. Si vous sélectionnez address.street, seules les rues sont sélectionnées et la liste est affichée ''. Je n'utilise jamais HQL sans une clause select, car cela clarifie ce qui est retourné par la requête. –

Questions connexes