OracleDataSourceFactory、OracleConnectionPoolDataSource 和 OracleDataSource 之间有什么区别?

What is the difference between OracleDataSourceFactory, OracleConnectionPoolDataSource and OracleDataSource?

OracleDataSourceFactoryOracleConnectionPoolDataSourceOracleDataSource有什么区别?您会在哪些不同情况下使用它们?

之所以有OracleDataSource and a OracleConnectionPoolDataSource是因为JDBC标准定义了两种类型的连接:

OracleDataSourcejava.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();