Oracle正在转向通用连接池(UCP),以维护可以借用、返回或关闭的池连接。我的网络应用程序通过自己的数据层实现了这一点。此应用程序将迁移到使用带有Hibernate的JPA。在这一点上,我只能将Hibernate配置为使用OracleJDBC驱动程序。
如何将Hibernate配置为使用UCP?
有关于如何使用c3p0的文档,但这对UCP不起作用。
这是我的Hibenate配置,带有JDBC连接,没有UCP:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@DBSERVER:1521:DATABASE</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
....
<mapping resource="Country.hbm.xml"/>
</session-factory>
</hibernate-configuration>
这些是我为UCP和JDBC设置的连接,用于在没有Hibernate的情况下直接访问:
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setUser("username");
pds.setPassword("password");
pds.setConnectionFactoryProperty("driverType", "thin");
pds.setURL("jdbc:oracle:thin:@DBSERVER:1521:DATABASE");
pds.setInitialPoolSize(10);
pds.setMaxPoolSize(200);
您必须实现一个ConnectionProvider
才能将OracleConnectionPool
与Hibernate接口。
下面是这样一个实现的示例:https://forum.hibernate.org/viewtopic.php?p=2452561.