Je suis l'apprentissage de JPA et ai une question:Quand avons-nous besoin de plus d'un EntityManager?
Dans quels cas nous avons besoin de plus d'un EntityManager
dans notre application?
Les deux situations que je suis au courant sont les suivantes:
Lorsque notre application est une application multi-thread et plus d'un thread a besoin transaction JPA parce
EntityManager
est thread-safe et nous avons besoin unEntityManager
par fil.Lorsqu'un du fil a besoin de plusieurs transactions simultanées, nous avons besoin de plus d'un
EntityManager
dans ce fil parce qu'il ya une relation univoque entreEntityManager
etEntityTransaction
.
Q1. Y a-t-il d'autres situations où nous avons besoin de plus d'un EntityManager
?
Q2. Jusqu'à ma compréhension, il devrait y avoir un seul EntityManagerFactory
par unité de persistance. Ai-je raison? Si non, alors quelles sont ces situations lorsque nous avons besoin de plusieurs EntityManagerFactory
par unité de persévérance?
Pour Q1: Je suppose qu'un objet _Entity Manager_ devrait avoir un surcoût minime, mais je suis toujours impatient de demander combien de temps :) Wow, que les threads diff qui dépendent les uns des autres est plus complexe. Alors est-il sûr de dire que vous devriez avoir 1 EM par Thread? Ensuite, vous vous assurez que vous attrapez des exceptions puisque vous avez plusieurs threads en utilisant la même table, non? – thirdy
Oui, puisque EM n'est pas thread-safe, peut-il être utilisé sur plusieurs threads si je crée un wrapper autour et inclure des méthodes de sauvegarde/mise à jour 'synchronisées' dans l'encapsuleur qui appelle en interne save/update de EM. Aussi je ne jamais effacer/fermer le EM? Je pense qu'il peut encore y avoir des problèmes pour la lecture et l'écriture simultanées. Pourriez-vous me faire part de vos commentaires à ce sujet? – bluelurker