驱动程序管理器获取连接的连接超时

2022-09-01 18:01:11

我正在尝试使用标准 JDBC 方式连接到 DB

connection = DriverManager.getConnection(url, username, password);

连接上是否有超时的最大值,连接存在多长时间,我可以增加该值吗?我希望在连接永远开放的情况下,这是一个好主意。


答案 1

您可以在驱动程序管理器上设置超时,如下所示:

 DriverManager.setLoginTimeout(10);
 Connection c = DriverManager.getConnection(url, username, password);

这意味着,如果连接无法在给定时间内打开,则表示连接超时。

就使连接永远保持打开而言,如果不关闭连接,这是可能的,但这可能不是一个好主意。完成连接后,应立即关闭它们。

如果要优化连接的打开和关闭,则可以使用连接池。


答案 2

该值通常由 DB 控制。您无法使用代码控制它。这取决于所使用的数据库服务器。通常约为30分钟至1小时。

另一方面,永远保持开放是一个非常糟糕的主意。最佳做法是获取关闭 ,并在尽可能的范围内避免资源泄漏和潜在的应用程序崩溃,由泄漏和超时引起。ConnectionConnectionStatementResultSet

没错,连接数据库是一项代价高昂的任务。如果您的应用程序应该运行相对较长的时间并且相当频繁地连接数据库,请考虑使用连接池来提高连接性能。如果您的应用程序是 Web 应用程序,那么请查看应用程序服务器的文档,它通常提供一个连接池工具,就像 .如果它是一个客户端应用程序,那么寻找已经证明了其健壮性的第三方连接池库,例如Apache Commons DBCP(常用,用于批量应用程序服务器),C3P0(从Hibernate知道)和Proxool(如果你想要XA连接)。DataSource

请记住,使用连接池时,您仍然必须编写正确的JDBC代码,即在尽可能短的范围内获取关闭所有资源。连接池将反过来担心实际关闭连接或只是将其释放回池以供进一步重用。

您可能会从本文中获得更多见解 如何以正确的方式完成JDBC基础知识。

希望这有帮助和快乐的编码。


推荐