如何使用UCP配置Hibernate

如何使用UCP配置Hibernate,hibernate,jdbc,ucp,Hibernate,Jdbc,Ucp,Oracle正在转向通用连接池(UCP),以维护可以借用、返回或关闭的池连接。我的Web应用程序有自己的数据层。此应用程序将迁移到Hibernate中使用JPA。此时,我只能将Hibernate配置为使用Oracle JDBC驱动程序 如何将Hibernate配置为使用UCP 有关于如何使用c3p0的文档,但这不适用于UCP 这是我的Hibenate配置,带有不带UCP的JDBC连接: <hibernate-configuration> <session-factory

Oracle正在转向通用连接池(UCP),以维护可以借用、返回或关闭的池连接。我的Web应用程序有自己的数据层。此应用程序将迁移到Hibernate中使用JPA。此时,我只能将Hibernate配置为使用Oracle JDBC驱动程序

如何将Hibernate配置为使用UCP

有关于如何使用c3p0的文档,但这不适用于UCP

这是我的Hibenate配置,带有不带UCP的JDBC连接:

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

您必须实现一个
ConnectionProvider
来将
OracleConnectionPool
与Hibernate连接起来


下面是这样一个实现的示例:。

那么您要迁移到纯JPA解决方案吗?数据源将由JTA管理?这是正确的:使用Hibernate作为JPA提供者的JPA解决方案。好吧,我认为没有一个答案是可行的。我的最佳选择是使用上面的代码实现自定义ConnectionProvider。但它真的需要使用UCP吗?标准连接池足以满足大多数用例。
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);