Java连接池技术

5
我搜索了连接池并阅读了相关内容。如果我理解正确,连接池就像是打开的连接的集合。如果建立或创建一个连接,应将其添加到连接池中,如果该连接关闭,则应从连接池中删除;只要它是打开状态,我就可以一遍又一遍地使用它。
在阅读这些关于连接池的教程和解释时,我有几个问题:
  1. 连接池只能在特定计算机上使用吗?比如说计算机A无法与计算机B共享连接池?
  2. connection.close() 应该放在哪里?
仅当选择/加载记录时才使用连接是正确的吗?在获取返回的记录/数据后,我会在 finally 语句中关闭连接。添加、编辑和删除记录也是如此。在处理过程中,我会放置一个进度条,以便用户等待完成并再次执行某些操作,这意味着我每次只打开一个连接。
感谢您的解释。 :)
1个回答

9
注意:我假设我们正在讨论 java.sql.Connection 接口。

一个连接池只能在特定计算机上使用吗?例如,ComputerA 不能与 ComputerB 共享其连接池吗?

连接存在于运行应用程序和数据库之间。自然而然,两台不同的计算机无法共享同一运行中的应用程序,因此它们无法共享与数据库的连接。

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

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

仅在选择/加载记录时使用连接是正确的吗?在获得返回的记录/数据后,我在 finally 语句中关闭连接。

是的,没错。你不希望手动保留Connection引用 - 使用它来执行SQL/DML,然后在finally块中调用close()将其放回池中,就像你正在做的那样。


2
所有的都是正确的,如果你正在使用Java 7,你可以使用新的AutoCloseable接口,而不是将close()放在finally块中。请查看Oracle文档中的此示例 - Eyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接