JDBC 中的连接是什么?

2022-09-04 21:17:25

什么是 JDBC 中的连接对象?如何维护此连接(我的意思是它是网络连接)?它们是 TCP/IP 连接吗?为什么每次创建连接都是一项成本高昂的操作?为什么这些连接在一段时间后变得陈旧,我需要刷新池?为什么我不能使用一个连接来执行多个查询?


答案 1

这些连接是 TCP/IP 连接。为了不必在每次创建新连接时都产生创建开销,因此存在动态扩展和收缩的连接池。可以将一个连接用于多个查询。我想你的意思是你把它释放到池中。如果这样做,可能会从池中取回相同的连接。在这种情况下,执行一个或多个查询并不重要

连接的成本是连接,这需要一些时间。数据库为每个连接准备一些东西,如会话等。每次都必须这样做。由于多种原因,连接变得陈旧。最突出的是介于两者之间的防火墙。连接问题可能导致连接重置或可能存在简单的超时


答案 2

要添加到其他答案:

是的,您可以对多个查询重复使用相同的连接。这甚至是可取的,因为创建新连接非常昂贵。

您甚至可以同时执行多个查询。您只需要为每个查询使用一个新的java.sql.Statement/PreparedStatement实例。语句是 JDBC 用来跟踪正在进行的查询的,因此每个并行查询都需要自己的语句。但是,您可以并且应该对连续查询重用语句。


推荐