gpt4 book ai didi

java - 将特殊的 JDBC 驱动程序功能与动态代理连接池结合使用

转载 作者:行者123 更新时间:2023-12-01 15:41:27 25 4
gpt4 key购买 nike

我们正在评估旧版 Oracle JDBC 项目的 JTA 事务管理器,到目前为止已经研究了 Bitronix 和 Atomikos。

Bitronix 和 Atomikos 连接池的 java.sql.DataSource 实现都大量使用它们返回的 JDBC 接口(interface)实例的动态代理对象。

Bitronix PoolingDataSource 连接的PreparedStatement 本身就是动态代理对象,将它们强制转换为oracle.jdbc.OraclePreparedStatement 会导致ClassCastException。另一方面,Atomikos 动态连接代理对象返回实际的 OraclePreparedStatement 实例 - 可以进行转换。

旧代码使用 Oracle JDBC update batching因此将 java.sql.PreparedStatements 转换为 oracle.jdbc.OraclePreparedStatement 以调用 OraclePreparedStatement.setExecuteBatch(batchSize)。不能选择切换到标准 JDBC 批处理。

在给定情况下,我们应该如何使用需要访问实际驱动程序类/接口(interface)的特殊 JDBC 驱动程序功能?

最佳答案

如果连接池正确支持java.sql.Wrapper接口(interface),您可以使用unwrap方法访问包装的对象。

关于java - 将特殊的 JDBC 驱动程序功能与动态代理连接池结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com