问题描述
OracleDataSourceFactory
,OracleConnectionPoolDataSource
和OracleDataSource
有什么区别?您将在哪种情况下使用它们?
解决方法
之所以会有OracleDataSource
和OracleConnectionPoolDataSource
是因为JDBC标准定义了两种连接类型:
-
JDBC应用程序中常用的
-
java.sql.Connection
-
javax.sql.PooledConnection
由连接池供应商未直接由应用程序使用
OracleDataSource
是java.sql.Connection
对象的工厂,它是应用程序广泛使用的数据源。另一方面,OracleConnectionPoolDataSource
用于javax.sql.PooledConnection
,并且仅在连接缓存实现中使用(例如,UCP)。
您可以放心地忽略OracleDataSourceFactory
,它是构建Oracle不再升级的DataSource对象的构件。
使用19c Oracle JDBC驱动程序,您将像这样实例化数据源:
oracle.jdbc.datasource.OracleDataSource ds = oracle.jdbc.pool.OracleDataSource();
或者,如果您正在使用重放驱动程序(用于Application Continuity):
oracle.jdbc.datasource.OracleDataSource ds = oracle.jdbc.replay.OracleDataSourceImpl();