Différent entre cascade et inverse
De nombreux développeurs Hibernate sont confus à propos de l'option cascade et du mot-clé inverse. À certains égards, ils se ressemblent vraiment au début, les deux sont liés à la relation.
Cascade vs inverse
Cependant, il n'y a pas de relation entre cascade et inverse, les deux sont des notions totalement différentes.
1. inverse
Ceci est utilisé pour décider quel côté est le propriétaire de la relation pour gérer la relation (insérer ou mettre à jour la colonne de clé étrangère).
Exemple
Dans cet exemple, le propriétaire de la relation appartient à stockDailyRecords (inverse = true).
... ...
Lorsque vous enregistrez ou mettez à jour l'objet stock
session.save(stock); session.update(stock);
Hibernate insérera ou mettra à jour uniquement la table STOCK, aucune mise à jour sur la colonne de clé étrangère. More detail example here…
2. Cascade
En cascade, une fois une opération (sauvegarde, mise à jour et suppression) effectuée, il décide s'il doit appeler d'autres opérations (sauvegarde, mise à jour et suppression) sur une autre entité en relation.
Exemple
Dans cet exemple, la cascade = "save-update" est déclarée sur stockDailyRecords.
... ...
Lorsque vous enregistrez ou mettez à jour l'objet stock
session.save(stock); session.update(stock);
Il insérera ou mettra à jour l'enregistrement dans la table STOCK et appellera une autre instruction d'insertion ou de mise à jour (cascade = "save-update") sur StockDailyRecord. More detail example here…
Conclusion
En bref, "l'inverse" est de décider quel côté mettra à jour la clé étrangère, tandis que "en cascade" est de décider ce que l'opération de suivi doit exécuter. Les deux sont assez similaires dans la relation, mais ce sont deux choses totalement différentes. Les développeurs Hibernate valent la peine de consacrer du temps à ses recherches, car mal comprendre le concept ou l'utiliser à mauvais escient entraînera de sérieux problèmes de performances ou d'intégrité des données dans votre application.