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

2022-09-03 06:40:40

我正在尝试使用连接池,但我不理解正确。谁来实施它?软件、驱动程序还是数据库?

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

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


答案 1

有几种可能性:

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

池化有许多优点:

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

  • pool将负责损坏的连接,它也可以在将其提供给您之前测试连接

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


答案 2

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

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

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

因此,获得DBCP(恕我直言,它比替代方案更好),然后使用它。


推荐