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