Jak działają transakcje JPA

Następujący kod zostaje wykonany, gdy chcę utrwalić dowolny obiekt. Sprawy wydają się działać dobrze, ale nie rozumiem, jak to działa!

EntityManager em = getEntityManager();
EntityTransaction userTransaction = em.getTransaction();
userTransaction.begin();
em.persist( ent );
userTransaction.commit();

Powyższy EntityManager jest pojedynczą instancją współużytkowaną przez całą aplikację. Po rozpoczęciu transakcji; Po prostu mówię em.persist (podmiot) .. Jak hibernacja wie, że należy do której transakcji!

Załóżmy, że w mojej aplikacji jest 10 jednoczesnych użytkowników i wszystkie 10 wątków wykonujących powyższy kod. W ten sposób powstaje i angażuje się 10 niezależnych transakcji. Ale wszystkie 10 różnych podmiotów nie kojarzę ich z odpowiednimi transakcjami; więc jak JPA jest w stanie to rozwiązać!

Na podstawie odpowiedzi; mamy poniżej; mówimy, że powinniśmy mieć instancję EntityManager na wątek? Czy to nie będzie zabójstwo na serwerze! Czy powinniśmy połączyć te instancje? Czy nie będzie to równoznaczne z ponownym wdrożeniem rodzaju łączenia połączeń?

questionAnswers(4)

yourAnswerToTheQuestion