Как работают транзакции 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 для каждого потока? Не будет ли это убийством на сервере! Должны ли мы объединять эти экземпляры? Не будет ли это эквивалентно повторной реализации своего рода пула соединений?

7
задан Deepak 27 June 2012 в 09:50
поделиться