D-rk
D-rk

Reputation: 5919

When are connections taken/returned from a connection pool?

I have a simple Java SE Application which uses JPA(EclipseLink). By default I have one 'default' connection pool which allows up to 32 connections.

Suppose I do something like this:

EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("myPU");

//read
EntityManager em = emFactory.createEntityManager();

TypedQuery<Entity.class> q = em.createQuery("Select e from Entity e", Entity.class);
List<Entity> entities = q.getResultList();

em.close();

//write
em = emFactory.createEntityManager();

Entity e = new Entity();
em.getTransaction().begin();
em.persist(e);
em.getTransaction().commit();

em.close();

Upvotes: 2

Views: 1996

Answers (1)

Milan Baran
Milan Baran

Reputation: 4232

Well, i do not know how the EclipseLink works, but in Hibernate you can set connection release strategy to release connection to pool after: statement, transaction, entity_close, auto. link But i can't find such a thing for EclipseLink so I assume EclipseLink release connection strategy is after entity_close.

So, it would be like this:

EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("myPU");

//read
EntityManager em = emFactory.createEntityManager();

TypedQuery<Entity.class> q = em.createQuery("Select e from Entity e", Entity.class);
List<Entity> entities = q.getResultList(); << TAKE FROM POOL

em.close(); << RELEASE

//write
em = emFactory.createEntityManager();

Entity e = new Entity();
em.getTransaction().begin(); << TAKE FROM POOL
em.persist(e);
em.getTransaction().commit();

em.close(); << RELEASE

Upvotes: 2

Related Questions