使用 oracle jdbc 模板在 java 中创建新的数据库连接

Posted

技术标签:

【中文标题】使用 oracle jdbc 模板在 java 中创建新的数据库连接【英文标题】:Creation of new database connection in java using oracle jdbc template 【发布时间】:2019-10-09 05:50:09 【问题描述】:
/* connection pool created with 5 connections based on the region specific.
 with below code it will get connection from connection pool which is already created.*/

Connection con = DatasourceClient.getDataSourceMap.get(region).getConnection();
OracleConnection oConn = con.unwrap(oracle.jdbc.OracleConnection.class);

上面的代码会从池中获得两个连接,我需要关闭 con 和 Oconn 吗?

我正在通过更改池属性尝试多种方法来耗尽池并且连接关闭异常。 所以只想知道上面的代码在做什么。

尝试关闭上述连接,但没有得到任何不同的结果。

使用 Oracle Jdbc 模板而不是 spring jdbc,因为在我的程序中有数组值,在少数情况下仅输入,在某些情况下仅输出,而其他两个 INOUT。

有人可以帮我吗?谢谢。

【问题讨论】:

当您手动处理Connection 对象时,您还需要关闭它们。关闭外部连接应该没问题,因为它最初会委托给OracleConnection,最终结果应该是它应该返回到池中。但是,我建议将其设置为透明并使用 AbstractRoutingDataSource 之类的东西来自动选择您需要的 DataSource 并让 Spring 处理打开/关闭连接的所有困难(是的,您仍然可以使用 Spring 管理的连接 unwrap )。 【参考方案1】:

不,它只会输出一个连接,然后您将其解包到它的实际类。

但是,您需要调用con.close()(而不是oCon.close())才能将连接返回到池中。这是因为包装器的 close() 实际上并没有关闭连接,而是将其返回到池中。

【讨论】:

谢谢Kayaman,现在正在做同样的事情,但连接不会回到tomcat连接池,我也编辑了我的问题,为什么我使用oracle jdbc模板而不是Spring Jdbc。如果您对此有任何信息,请帮助我

以上是关于使用 oracle jdbc 模板在 java 中创建新的数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

如何在 java 中使用 jdbc 为 oracle 10g 执行 log miner PL/SQL 查询

jdbc连接oracle

Java JDBC 主键 Oracle 数据库

JDBC:JAVA & Oracle

java(jdbc)向oracle中插入记录

使用 JDBC 在 Oracle 数据库上创建 Java