当前位置: 首页 > 知识库问答 >
问题:

将连接对象返回到HikariCP池的最佳方法

商俊智
2023-03-14

我正在尝试使用HikariCP连接池。我能够让它工作,并获得一个我可以使用的连接。我不确定将连接返回到池的最佳方法是什么。

我有以下问题:

  • 我是否应该在完成后关闭连接,依赖idleTimeout和maxLifetime设置,或者是否可以使用另一个调用来避免占用池中的连接
  • 如果我关闭连接(而不是返回池),是否会创建其他连接对象以满足连接池大小的要求

寻找有用的建议。

共有1个答案

湛宏旷
2023-03-14

与大多数连接池一样,当您请求JDBC连接时,Hikari不会提供实际的JDBC连接。它所做的是为您提供一个实现连接接口的代理。对于Hikari,它是一个ConnectionProxy对象。

此代理有几个用途,主要用途是-将打开/关闭连接和语句的控制权从您手中转移到连接池中。这是自动发生的,你应该像往常一样使用你的连接。这包括在使用后关闭它们。

如果您查看Hikari的源代码,尤其是在ConnectionProxy类中,您将看到close()方法与标准方法有很大不同。守则内容如下:

将连接标记为关闭、执行清理、重置基础连接状态和参数

因此,只需调用close()即可清理并返回到池的连接。

 类似资料:
  • 我正在使用hikaricp(这可能也适用于任何其他数据库连接池)。我有一个DBPool类,在其中我实例化了一个HikariDataSource(使用HikariConfig对象)。对于这个DBPool,我使用lazyholder习惯用法来限制每个VM一个池实例。但是,一旦获得对池的引用,就可以检索连接对象(无需任何进一步的锁/同步/信号量检查),因为我认为连接池会处理我的连接对象限制。每次通过数据

  • 我设置了一个光滑的数据库对象从类型安全配置像这样: 配置对象告诉Slick使用HikariCP,如下所示: 在实例化DatabaseService之后,我可以通过运行。 第一个问题是,我需要做些什么来从池中获取连接,还是在调用? 其次,执行一个或多个查询后,如何将当前数据库连接返回到连接池?

  • 我正在做jndi查找JBOSS AS. Code中配置的数据源,如下所示。 initialContext=新的initialContext(道具); dataSource=(dataSource)initialContext。查找(bundle.getString(“jndiName”); ource.get连接; 这段代码放在servlet的doPost中。我也很安全地打电话给你 联系关闭()

  • 问题内容: 我有这样的对象: 现在我只想获取主题和ID。有没有办法像这样获得它: 因为即使只使用此查询 我只能得到这样的记录: 我不希望获得具有属性ID和主题的对象数组。实现这一目标的最好方法是什么? 问题答案: 在Spring Data JPA中,您可以使用投影: 基于接口 : 基于类 (DTO): 然后在您的仓库中创建一个简单的查询方法: 您甚至可以创建动态查询方法: 然后像这样使用它:

  • 使用来自DBCP的BasicDataSource,如果我们执行getConnection()并且在最后一个块中我们关闭连接,它是真的将连接返回到池还是关闭连接。我正在检查的代码片段是这样的 我正在检查BasicDataSource的源代码,并访问了这个包装类以获取连接。 委托对象的类型为java。sql。联系包装器代码调用委托的close方法,该方法将关闭集合,而不是将连接返回到池。这是DBCP的

  • 问题内容: 目前,我们正在使用带有8gb RAM的4个cpu窗口框,并在同一框上安装了MySQL5.x。我们正在为应用程序使用Weblogic应用程序服务器。我们的应用程序目标是200个并发用户(显然不是同一模块/屏幕)。那么,我们应该在连接池中配置的最佳连接数是多少(最小和最大数)(我们正在使用weblogic AS的连接池机制)? 问题答案: 这个问题有一个非常简单的答案: 连接池中的连接数应