java - 什么时候必须关闭数据库连接? ( java )

标签 java postgresql jdbc

所以我有一个作为 TCP 服务器无限期运行的 Java 进程(从另一个进程接收消息,并有 onMsg 处理程序)。

我想在我的 Java 程序中对消息做的一件事是使用到 postgres 的数据库连接将它写入磁盘。现在,我有一个单一的静态连接对象,每次收到消息时我都会调用它。我不会为每条消息关闭和重新打开连接。

我对 Java 还是有点陌生​​,我想知道 1) 使用一个无限期打开的连接对象是否有任何陷阱或危险,以及 2) 从不关闭连接而不是重新打开连接是否有性能优势/每次我想访问数据库时都关闭?

感谢您的帮助!

最佳答案

I do NOT close and reopen the connection for each message.

是的……至少就普通的 Connection 对象而言是这样。否则,如果您以断开的连接结束,它将永远断开,并且如果您需要同时执行多个操作,就会遇到问题。

您想要的是一个连接池来管理与数据库的“真实”连接,您只需为每个操作从池中请求一个连接,并在完成后关闭它。关闭“逻辑”连接只是将“真实”连接返回到池中以进行另一项操作。 (池可以处理通过心跳保持连接的 Activity 状态,随着时间的推移退出连接等)

有很多可用的连接池技术,我已经有很长时间没有使用“普通”JDBC了,所以我不想说目前最先进的技术是什么——但那是你的研究可以自己做:)

关于java - 什么时候必须关闭数据库连接? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22243932/

相关文章:

java - 为什么重写的方法不能抛出新的检查异常

java - 字符串返回标签而不是格式化文本

postgresql - 合并多个表

java - 如何更改MySQL中其他主机的权限?

java - itext PDFReader阅读256位AES加密pdf

java org.immutables 库 : all duplicate insertion in map

sql - 在 PostgreSQL 中对连续的行进行分组

sql - PostgreSQL 在Where 条件下使用别名

mysql - Glassfish 没有正确导入 mysql jdbc

java - 如何重置 JDBC 连接池