Java 重用与数据库的连接

Java 重用与数据库的连接,java,database,jdbc,database-connection,dbcp,c3p0,Java,Database,Jdbc,Database Connection,Dbcp,C3p0,直到现在,每当我查询数据库时,我都会打开一个到数据库的新连接。如何实现打开连接后可以重用的属性 完成后,请告诉我是否可能泄漏资源。基本上您需要JDBC连接池,通常是实现接口。看一看,看一看。很可能您的容器/服务器已经提供了连接池的实现 当您每次打开连接时都使用连接池时,实际上是在从连接池中获取连接池(或者在连接池为空时打开连接池)。关闭连接时,它实际上返回到池中。只有忘记了后者,泄漏才会发生。(或者忘记关闭结果集,语句…)您可以(也应该)重用数据库连接。连接池是实现这一点的技术之一。这里可以阅读

直到现在,每当我查询数据库时,我都会打开一个到数据库的新连接。如何实现打开连接后可以重用的属性


完成后,请告诉我是否可能泄漏资源。

基本上您需要JDBC连接池,通常是实现接口。看一看,看一看。很可能您的容器/服务器已经提供了连接池的实现


当您每次打开连接时都使用连接池时,实际上是在从连接池中获取连接池(或者在连接池为空时打开连接池)。关闭连接时,它实际上返回到池中。只有忘记了后者,泄漏才会发生。(或者忘记关闭
结果集
语句
…)

您可以(也应该)重用数据库连接。连接池是实现这一点的技术之一。这里可以阅读有关连接池的详细教程:

@Preet Sangha我不理解您我想从不同的服务器使用它如果语句或结果集未关闭,为什么会出现泄漏?关闭连接会自动关闭它们,即使它是池连接(或者close()方法的契约被破坏)@JBNizet:我相信你是对的,但是你能发布一些引用吗?例如,表示使用池连接是透明的,并显示了不会在finally块中关闭语句的代码。您链接到的javadoc表示,当调用connection.close()方法时,与连接关联的数据库和JDBC资源将关闭。连接是物理关闭还是刚刚释放到池并不重要。尊重这项合同是泳池的责任。另外,请查看中的close()和passiveate()