我可以找到许多关于如何使用连接池以及为什么这是个好主意的问题,但我想知道我是否真的需要它。
我正在创建一个服务器应用程序,虽然它是多线程的,但我已经小心翼翼地确保只有一个线程能够访问我的数据库连接。
那么使用连接池有什么意义呢?
我不能只在生命周期的开始时打开一个连接并永久使用它吗,或者如果连接空闲太长时间会超时吗?
我绝对必须在使用完后调用close()
来关闭连接吗,还是只需要在ResultSet
和/或Statement
上调用close()
就足够了?
我可以找到许多关于如何使用连接池以及为什么这是个好主意的问题,但我想知道我是否真的需要它。
我正在创建一个服务器应用程序,虽然它是多线程的,但我已经小心翼翼地确保只有一个线程能够访问我的数据库连接。
那么使用连接池有什么意义呢?
我不能只在生命周期的开始时打开一个连接并永久使用它吗,或者如果连接空闲太长时间会超时吗?
我绝对必须在使用完后调用close()
来关闭连接吗,还是只需要在ResultSet
和/或Statement
上调用close()
就足够了?
除了非常简单的情况(见上文),通常最好使用连接池。那么使用连接池有什么意义吗?
当然可以。通常,在JDBC驱动程序或其他客户端库中有设置以防止这些超时或重新连接。我不能在生命周期开始时打开连接并永久使用它,或者如果空闲时间太长就会超时吗?
应该在从DataSource.getConnection()获取的连接上调用close()(例如,当连接池实现DataSource时)。是否绝对必须在使用后调用close()关闭我的连接,或只需在ResultSet和/或Statement上调用close()即可?