Quelle est la meilleure façon de mettre à jour l'entité dans l'APP?
Je suis en train de réaliser certaines opérations CRUD en utilisant JPA. Pour mettre à jour un objet qui est la bonne manière de faire?
Par requête de mise à jour ou à travers find
méthode de EntityManager
?
J'ai un Employee
objet j'ai besoin de mettre à jour. Qui est la voie droite? Pour des raisons de simplicité, find
méthode est bonne, j'ai donc utilisé le find()
méthode.
Merci de me guider.
source d'informationauteur user414967
Vous devez vous connecter pour publier un commentaire.
À l'aide de
executeUpdate()
sur leQuery
API est plus rapide parce qu'il ignore le contexte permanent .Cependant , en passant contexte permanent serait la cause de l'état de l'instance dans la mémoire et les valeurs réelles de cet enregistrement dans la base de données ne sont pas synchronisées.Considérons l'exemple suivant :
Après le rinçage, le nom dans la base de données est mise à jour avec la nouvelle valeur, mais l'employé de l'instance dans la mémoire conserve encore la valeur d'origine .Vous devez appeler
entityManager.refresh(employee)
pour recharger la mise à jour du nom de la DB à l'employé de l'instance.Il semble étrange, si vos codes ont encore de manipuler l'instance employé après le rinçage, mais vous oublier de refresh() de l'instance employé employé que de l'instance contient toujours les valeurs d'origine.Normalement ,
executeUpdate()
est utilisé dans la majorité processus de mise à jour car il est plus rapide en raison de contourner le contexte permanentLa bonne façon de mettre à jour une entité, c'est que vous venez de définir les propriétés que vous souhaitez mettre à jour par les organismes de normalisation et de laisser la JPA pour générer la mise à jour de SQL pour vous pendant le rinçage au lieu de l'écrire manuellement.
Ça dépend de ce que vous voulez faire, mais comme vous l'avez dit, l'obtention d'une entité de référence à l'aide de
find()
et puis juste la mise à jour de cette entité est la façon la plus simple de le faire.Je n'avais pas pris la peine sur les différences de performances entre les différentes méthodes, sauf si vous avez de fortes indications que cela est vraiment important.
Il dépend du nombre d'entités qui vont être mis à jour, si vous avez un grand nombre d'entités à l'aide de JPA Requête de mise à Jour de la déclaration est mieux que vous n'avez pas à charger toutes les entités de la base de données, si vous voulez mettre à jour qu'une entité puis à l'aide de la recherche et de la mise à jour est bien.