使用 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 中创建新的数据库连接的主要内容,如果未能解决你的问题,请参考以下文章