我正在研究一些JDBC Oracle连接池项目,并遇到了一个名为通用连接池(UCP)的新的(Oracle)Oracle池实现.现在,它使用一个新类PoolDataSource用于连接池,而不是OracleDataSource [启用了缓存选项].我正在讨论是否要切换到这个新的实现,但找不到任何关于修复/升级这些会给我带来什么(如果有的话)的好文档.有人都有经验吗?加号/劣势?谢谢.
小智 33
最新的Oracle jdbc驱动程序(11.2.0.1.0)显式指出Oracle Implicit Connection缓存(使用OracleDataSource的缓存)已被弃用:
Oracle JDBC驱动程序发布了11.2.0.1.0生产Readme.txt
此版本中有哪些新功能?
通用连接池在此版本中,不推荐使用Oracle隐式连接缓存功能.强烈建议用户使用新的通用连接池.UCP具有ICC的所有功能,还有更多功能.UCP在单独的jar文件ucp.jar中可用.
所以我认为最好开始使用UCP,但文档并不是那么好.例如,我没有找到一种方法来使用UCP与spring ...
更新:我找到了正确的弹簧配置:好的我觉得我找到了正确的配置:
<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="URL" value="jdbc:oracle:thin:@myserver:1521:mysid" />
<property name="user" value="myuser" />
<property name="password" value="mypassword" />
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource" />
<property name="connectionPoolName" value="ANAG_POOL" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="initialPoolSize" value="5" />
<property name="inactiveConnectionTimeout" value="120" />
<property name="validateConnectionOnBorrow" value="true" />
<property name="maxStatements" value="10" />
</bean>
Run Code Online (Sandbox Code Playgroud)
关键是指定正确的工厂类和正确的工厂方法
PDS是"通用的",因为它为非Oracle数据库(例如MySQL)提供了与ODS相同级别的池功能.
请参阅UCP开发指南,有关Oracle网站和UCP过渡指南的文章
我没有看到从ODS迁移到UCP(PDS)的任何直接好处,但未来Oracle可能会弃用ODS中的一些功能.我使用ODS已经有一段时间了,我现在对它非常满意,但是如果我开始新的我会选择PDS.