如何使用Java创建PostgreSQL连接池?

时间:2011-06-22 18:01:43

标签: java postgresql connection-pooling

我正在尝试使用连接池,但我不理解它。谁实现了它?软件,驱动程序或数据库?

如何使用连接池运行程序?我正在使用本机PostgreSQL驱动程序。

我需要一个代码示例。我正在做一个webcrawler,它有很多与数据库的连接。

3 个答案:

答案 0 :(得分:18)

有几种可能性:

无论您选择哪个选项,原则上它始终以相同的方式工作:客户端维护与数据库的网络连接池。每次使用DataSource请求新连接时,连接池都会查看免费连接并提供给您。当您认为关闭连接时,它实际上将被释放并重新放回池中。其他线程现在可以使用相同的已建立的连接。

合并池有很多优点:

  • 没有TCP / IP连接,授权等的开销 - 它只进行一次。

  • 游泳池将处理断开的连接,它也可能在给你之前测试连接

  • 最后,活动数据库连接的数量更稳定,如果已经打开太多,连接池应该拒绝返回连接

答案 1 :(得分:1)

池本身由位于应用程序代码和数据库驱动程序之间的代码完成。

谁将那些代码放在那里?可能是任何人。它可能是你 - 有像DBCP这样的库,你的代码可以使用它来将池放在数据库之上。它可以是J2EE容器,如Tomcat或JBoss。它甚至可能是数据库 - 正如Tomasz指出的那样,PostgreSQL带有汇集代码。

听起来你没有使用J2EE容器,在这种情况下,它取决于你或数据库。就个人而言,我更喜欢DBCP之类的专用池实现,而不是数据库提供的实现。数据库的程序员最关心数据库;游泳池的程序员最关心游泳池。

所以,得到DBCP(恕我直言,它比替代品更好),并使用它。

答案 2 :(得分:0)

我认为您正在寻找在客户端完成连接到数据库的连接池。基本思想是建立新连接的成本很高,因为它涉及建立连接,设置数据库端对象,验证等,从而重用连接对象。