EntityManager(s) are bound to @Transactional(transaction) and not to threads. When the transaction starts, Spring assigns distinct entity manager and on transaction rollback or commit, EntityManager instance life ends then. In the single thread, you can start multiple transaction and each transaction will have its own EntityManager.