【问题标题】:Creation of new database connection in java using oracle jdbc template使用 oracle jdbc 模板在 java 中创建新的数据库连接
【发布时间】: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 )。

标签: java oracle spring-boot jdbc


【解决方案1】:

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

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

【讨论】:

  • 谢谢Kayaman,现在正在做同样的事情,但连接不会回到tomcat连接池,我也编辑了我的问题,为什么我使用oracle jdbc模板而不是Spring Jdbc。如果您对此有任何信息,请帮助我
猜你喜欢
  • 1970-01-01
  • 2021-10-24
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多