在HikariPool中关闭连接

时间:2018-11-02 15:58:55

标签: java jdbc hikaricp

我有一个独立的Java应用程序,该应用程序获取消息流,进行批处理并将其使用Hikaricp插入到SQL Server数据库中。

目前我的工作是:

  • 从池中获取连接。
  • 创建准备好的语句以使用连接进行插入
  • 执行批量插入。

请注意,我从未关闭连接!并且当我达到maxPoolSize(20)时,尝试建立新连接时出现错误。

每次批量插入后,我应该关闭连接吗?

  • 从池中获取连接。
  • 创建准备好的语句以使用连接进行插入
  • 执行批量插入。
  • 关闭准备好的语句和连接。

但是,这意味着我要承担从池中获取连接的开销,并且在每次批量插入之后创建一个新的准备好的语句。

这是推荐的方法,还是有任何其他方法可以减少这笔额外费用?

1 个答案:

答案 0 :(得分:2)

您需要关闭连接。通常,池返回包装到另一个对象中的连接。而且,当您在包装器上调用close时,它只是将内部数据库连接标记为空闲并将其返回到池中。

如果现有PreparedStatement对象相同,则可以重复使用。如果您的每个任务都必须使用其唯一的PreparedStatement(由于业务逻辑),那么别无选择,您必须为每个任务创建新的PreparedStatement