eclipselink连接池

时间:2013-02-27 18:03:29

标签: jpa jdbc eclipselink connection-pooling

如果未在eclipse链接的persistence.xml中定义连接池,那么默认行为是什么?

它会为每个事务打开和关闭JDBC连接吗?它会创建一个默认的连接池吗?

4 个答案:

答案 0 :(得分:12)

不使用数据源时EclipseLink的默认连接池是最小/最大32个连接池,初始连接为1。因此,每个事务都将使用池连接,而不是连接/断开连接。

答案 1 :(得分:5)

如果使用应用程序服务器(Java EE)和容器管理持久性,则需要在应用程序服务器的管理控制台中设置连接池,而不需要在持久性中设置池化属性。 xml,例如:

<persistence-unit name="myPU" transaction-type="JTA">
  <jta-data-source>jdbc_my_DataSource</jta-data-source>
  <exclude-unlisted-classes>false</exclude-unlisted-classes>
  <shared-cache-mode>NONE</shared-cache-mode>
  <properties/>
</persistence-unit>

如果您使用不带应用程序服务器(Java SE)的EclipseLink,使用应用程序管理的持久性,那么如果您不配置池,将使用Internal Connection Pooling,例如:

<persistence-unit name="DemoPU" transaction-type="RESOURCE_LOCAL">
  <properties>
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
    <property name="javax.persistence.jdbc.user" value="myuser"/>
    <property name="javax.persistence.jdbc.password" value="mypassword"/>
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
  </properties>
</persistence-unit>

答案 2 :(得分:2)

<property name="eclipselink.connection-pool.default.initial" value="1"/>
<property name="eclipselink.connection-pool.default.min" value="64"/>
<property name="eclipselink.connection-pool.default.max" value="64"/>

答案 3 :(得分:0)

只是想为James&#39;提供代码源代码。回答上面:您可以看到在ServerSession的构造函数中创建了一个默认连接池,使用ConnectionPool中定义的init / min / max默认值,并可选择由开发人员通过属性覆盖/调整EntityManagerSetupImpl