首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java创建PostgreSQL连接池?

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

Stack Overflow用户
提问于 2011-06-23 02:01:43
回答 3查看 19.2K关注 0票数 16

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

如何使用连接池运行我的程序?我使用的是本地PostgreSQL驱动程序。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-23 02:07:04

有几种可能性:

  • 应用程序服务器/servlet容器可能会为您提供连接池,请参见,例如,Tomcat 7 JNDI Datasource for PostgresQL.

  • You可能会使用DBCP或C3P0等开源库手动创建连接池。

  • 最后,您的数据库JDBC驱动程序可能会提供一些内置的连接池实现,请参阅PostgresQL Connection Pools and Data SourcesPGConnectionPoolDataSource (我不知道这些类的更新和更新程度)。

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

池化有很多优点:

  • 没有TCP/IP连接、授权等开销--只需一次。
  • 池会处理断开的连接,它还可以在将连接提供给您之前对其进行测试
  • 最后,活动数据库连接的数量更稳定,如果您已经打开了太多

,连接池应该拒绝返回连接

票数 18
EN

Stack Overflow用户

发布于 2011-06-23 02:20:54

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

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

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

因此,获得DBCP (IMHO,它比替代方案更好),并使用它。

票数 1
EN

Stack Overflow用户

发布于 2011-06-23 02:04:41

我认为您正在寻找在客户端完成的连接池,它建立到数据库的连接。基本思想是,建立新的连接是昂贵的,因为它涉及建立连接、建立DB侧对象、认证等,并且因此重用连接对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6444379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档