Как работают JPA транзакции

Следующий код выполняется всякий раз, когда я хочу сохранить любую сущность. Кажется, все работает нормально, но я не понимаю, как это работает!

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

Приведенный выше EntityManager - это один экземпляр, общий для всего приложения. После начала транзакции; Я просто говорю em.persist (entity) .. Как hibernate узнает, к какой транзакции относится!

Предположим, в моем приложении 10 одновременно работающих пользователей и все 10 потоков, выполняющих приведенный выше код. Таким образом, 10 независимых транзакций создаются и совершаются. Но все 10 разных сущностей я не связываю их с их соответствующими транзакциями; Так как же JPA может это решить!

На основе ответов; у нас есть ниже; мы говорим, что у нас должен быть экземпляр EntityManager для каждого потока? Разве это не будет убийством на сервере! Должны ли мы объединять эти случаи? Не будет ли это равносильно повторной реализации своего рода пула соединений?

Ответы на вопрос(4)

Ваш ответ на вопрос