2010-09-21 4 views
2

J'ai une structure arborescente assez grande que je persiste avec Hibernate. Cela aurait dû être persistant avec le nœud racine d'abord, puis avec les enfants et ainsi de suite. Cependant, ce n'était pas comme cela que Hibernate l'a fait, il a d'abord persisté l'enfant et que mis à jour la colonne de référence dans l'enfant quand le parent avait été persistant. Ce n'est pas une façon optimale de le faire, j'ai donc forcé One-To-Many (JoinColum) à ne pas être null (nullable = false).La persistance d'Hibernate ralentit sur One-To-Many

Maintenant, il s'avère que tout est encore plus lent, beaucoup plus lent. Je ne comprends pas?!

+0

Je ne pense pas qu'il y ait assez de détails pour obtenir une réponse. –

+0

Je comprends que le niveau de détail est bas. Cependant, je n'en ai pas encore beaucoup et je travaille dessus. Donc, pour ajouter à tout cela peut dire que si j'ai "nullable = false" sur toutes mes relations One-To-Many et Many-To-One la persistance prend 30 minutes. Si je supprime la contrainte mais que j'ai les mêmes données, cela prend 40 secondes. Je pourrais aussi ajouter que je n'ai pas de dépendances cycliques dans mon graphe d'objet, c'est un arbre (sur les relations qui ont "cascada"). –

+0

Le problème est lié à la façon dont Hibernate effectue les insertions et les mises à jour. Si vous utilisez "nullable = true" (ou rien du tout), Hibernate ignorera la colonne de la clé étrangère sur l'insert et la mettra à jour plus tard avec une instruction de mise à jour. Cependant si "nullable = false" la clé étrangère sera dans l'insertion mais avec une valeur incorrecte et mise à jour plus tard par une déclaration de mise à jour ?! C'est très inefficace et quelque chose que je voudrais vraiment contourner (Pourquoi la différence est-elle si grande sur un PostgreSQL que je ne comprends toujours pas?). –

Répondre

1

S'il s'agit d'une association bidirectionnelle, vous devez mapper une extrémité comme inverse (attribut inverse dans xml et mappedBy si vous utilisez des annotations).

Questions connexes