2
我有一個簡單的使用JPA(EclipseLink)的Java SE應用程序。默認情況下,我有one 'default' connection pool,允許最多32 connections。何時從連接池獲取/返回連接?
想我做這樣的事情:
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();
- 當連接實際上是從連接池請求並且當他們再次釋放?
- 一個查詢是否可以請求池中的多個連接?
- 如果我將連接的最大數量從32設置爲1,會有什麼區別嗎?
連接是默認在懶洋洋的EclipseLink獲得的,儘管它可以被配置爲好。使用默認配置,Read連接立即釋放回池,所以getResultList將獲取並釋放連接。對於寫操作,它們也會被懶惰地獲得,所以提交操作將獲得並釋放寫連接 - 我相信begin()可以讓EclipseLink知道可能需要的事務,但不一定馬上啓動。 – Chris