title: Running multiple JPA transactions in parallel
body: <p>I have two (or more) Java Threads creating, updating and deleting entities from a mysql database using JPA. To achieve this I have a PersistenceLayer class creating the EntityManager and providing save, update and delete methods for all my entities looking like:</p>
  
  <pre><code>public void saveEntity(Entity entity) {
      manager.getTransaction().begin();
      manager.persist(entity);
      manager.getTransaction().commit();
  }
  
  public void saveEntity2(Entity2 entity) {
      manager.getTransaction().begin();
      manager.persist(entity);
      manager.getTransaction().commit();
  }
  </code></pre>
  
  <p>If one thread enters operation saveEntity and the other saveEntity2 at the same time, both will try to get the transaction from the EntityManager wich will fail. However I always thought that the underlying database is able to manage multiple transactions, especially if both are working on different rows or even different tables. Of course I could synchronize the blocks, but that would mean only one DB connection is possible at a time which will not scale to multiple users creating several threads.</p>
  
  <p>What wrong assumption am I doing here? Is it possible to submit multiple transactions to a database via JPA and let the DB handle concurrency issues?</p>