Java 连接池

标签 java database jdbc connection-pooling

我搜索了连接池并阅读了它。如果我理解正确的话,一个连接池就像一个开放连接的集合。如果建立或创建了一个连接,则应将其添加到连接池中,如果该连接已关闭,则应将其从连接池中删除;当它打开时,我可以一次又一次地使用它。

在阅读这些关于连接池的教程和解释时,我有一些问题:

  1. 连接池只能在特定计算机上使用吗?像电脑A 无法与 ComputerB 共享其连接池?

  2. connection.close()应该放在哪里?

仅在选择/加载记录时使用连接是否正确?获得返回的记录/数据后,我在 finally 语句处关闭连接。与添加、编辑和删除记录相同。当它正在处理时,我放置了一个进度条,这样用户将不得不等待它完成并再次执行一些过程,这意味着我一次只会打开一个连接。

感谢您的解释。 :)

最佳答案

注意:我假设我们正在谈论 java.sql.Connection界面。

Can a pool of connections only be used on a certain computer? Like ComputerA cannot share its connection pool with ComputerB?

正在运行的应用程序和数据库之间存在连接。自然地,两台不同的机器不能共享同一个正在运行的应用程序,因此它们不能共享与数据库的连接。

Where should connection.close() be placed?

您应该始终确保在使用 Connection 实例后调用 close()(通常在 finally block 中)。如果正在使用池,这实际上会将连接返回到幕后的池。引用:Closing JDBC Connections in Pool

Is it correct to use a connection ONLY when selecting/loading record? After I got the returned records/data I close the connection at finally statement.

是的,没错。您不想手动卡在 Connection 引用上 - 使用它来执行 SQL/DML,然后通过在finally block ,就像你正在做的那样。

关于Java 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16028947/

相关文章:

java - java项目中的XML问题

database - 是否可以将 Adob​​e Flash CS 连接到任何类型的数据库?

sql - 查询适用于 MySQL 而不是 Oracle

java - 两个 Web 应用程序指向 Sun glassfish 服务器中的相同 jndi

java - 如何通过 JDBC 连接使用 IO

java - 使用 Java Runtime 类在 IE 中打开带有请求参数的 URL

java - 如何合并两个 map <String, LocalDateTime> 并计算值之间的差异(以纳秒为单位)

java - Gradle 的 Maven Publish 插件未将 POM 或正确版本发布到 Maven Local

php - MySQL 无法插入带有外键的记录?

android - gradle 中的解析错误 - ExecException