ricg wrote:
1. Quelle est la différence entre <many-to-one> avec l'attribut unique et one-to-one> avec l'attribut property-ref ? Est-ce qu'on peut les utiliser tous les 2 dans les mêmes situations ? Ou est-ce qu'un des 2 est obligatoire dans certaines situations.
La différence est l'endroit où la clé etrangère est placée. Many to one => dans la table de l'objet en cours. one-to-one property-ref => dans la table de l'objet associé.
ricg wrote:
2. J'ai l'impression que le tag <index> (utilisé pour les collections) est remplacé dans Hibernate 3 par les tags list-index (pour les listes) et map-key (pour les maps) plus parlants. Est-ce que je me trompe ?
Non, c'est backward compatible cependant.
Quote:
De même, est-ce que index-many-to-many est remplacé par map-key-many-to-many ?
Oui
Quote:
J'ai commencé à lire le livre en français Hibernate 3 (livre intéressant au demeurant) où sont utilisés les tags index et index-many-to-many dans les situations où le chapitre 7 du manuel de référence de Hibernate 3 utilise map-key et map-key-many-to-many.
J'imagine que ça sera corrigé pour la seconde édition :-) Encore une fois, c'est backward compatible.
Quote:
3. Une question plus théorique : est-ce qu'il existe de la documentation pour savoir ce que fait une session au moment d'un commit. En particulier, j'aimerais savoir comment elle sait quels objets doivent être modifiés ou créés dans la base de données. Quelles structures/procédés/patterns utilise-t-elle pour cela ? Est-ce qu'elle parcourt tous les objets de la session pour savoir ce qu'elle doit faire (problèmes de performances ?) ? Je voudrais éviter d'avoir à lire le code de Hibernate mais avoir tout de même assez de détails sur les processus mis en jeu.
Il faut que tu lises le code pour tous les détails. au flush() et non au commit(), Hibernate compare son snapshot avec les objets à synchroniser.
Non il n'y a pas de problème de performance. N'oublie pas que tu accèdes à une base de données distante avec du temps réseau etc etc.
L'autre technique qu'utilisent certains concurrents est d'utiliser le bytecode enhancement pour détecter les changements de l'objet. Cette technique à plusieurs limitations importantes et n'apporte pas de gain significatif. De plus si tu enhances les classes hibernate, un type similaire d'optimisation est mis en place pour court-circuiter la comparaison dans certains cas (je n'ai jamais vu de mes yeux un quelconque gain).
Quote:
4. Pas d'index dans le manuel de référence. Ca manque vraiment. Une raison à ça ?
Si tu nous mets en place un index docbook et que tu taggues les mots significatifs, c'est avec plaisir :-)
Je parcours personnellement la doc en html et CTRL+F est un index bien plus rapide.[/quote]