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.
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
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
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. –