的EclipseLink连接池(eclipselink connection pooling)

2019-07-20 16:14发布

如果连接池没有在persistence.xml月食链接定义,什么是默认的行为?

它会打开和关闭对每一项交易JDBC连接? 它会创建一些默认的连接池?

Answer 1:

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



Answer 2:

如果您使用的应用程序服务器(Java EE的)和容器管理的持久性,那么你需要建立在应用程序服务器的管理控制台集中的连接,并且不需要在persistence.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>

如果您使用的EclipseLink不应用服务器(Java SE的),使用应用程序管理的持久性,那么如果不配置池, 内部连接池将被使用,例如:

<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>


Answer 3:

<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"/>


Answer 4:

只是想提供的代码源詹姆斯的回答以上:你可以看到,默认连接池在构造函数创建的ServerSession中,使用init /定义的最小/最大默认连接池 ,以及可选覆盖/由开发商通过调整在性能EntityManagerSetupImpl 。



文章来源: eclipselink connection pooling