66 votes

JPA fusion vs persist

Pour l'instant, ma préférence a été pour toujours utiliser l'EntityManager de l' merge() prendre soin d'insertion et de mise à jour. Mais j'ai également remarqué que l'opération de fusion effectue un supplément de sélectionner les requêtes avant de les mettre à jour/à insérer pour assurer l'enregistrement n'existe pas déjà dans la base de données.

Maintenant que je suis en train de travailler sur un projet qui demande beaucoup de (en vrac) insère à la base de données. À partir d'un point de vue des performances est-il judicieux d'utiliser persistent au lieu de les fusionner dans un scénario où je ne sais absolument que je suis toujours à la création d'une nouvelle instance des objets être conservées?

69voto

Óscar López Points 97105

Ce n'est pas une bonne idée d'utiliser merge lorsqu'un persist suffit. Merge fait beaucoup plus de travail; le sujet a déjà été abordé ici , et cet article explique en détail les différences, avec quelques diagrammes de flux pour clarifier les choses.

9voto

Piotr Nowicki Points 7565

J'irais certainement avec persister persist() si, comme vous l'avez dit:

(...) Je sais absolument que je crée toujours une nouvelle instance d'objets à conserver (...)

C’est l’objet de cette méthode: elle vous protégera dans les cas où l’entité existe déjà (et annulera votre transaction).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: