我有一个独立的Java应用程序,该应用程序获取消息流,进行批处理并将其使用Hikaricp插入到SQL Server数据库中。
目前我的工作是:
请注意,我从未关闭连接!并且当我达到maxPoolSize(20)时,尝试建立新连接时出现错误。
每次批量插入后,我应该关闭连接吗?
但是,这意味着我要承担从池中获取连接的开销,并且在每次批量插入之后创建一个新的准备好的语句。
这是推荐的方法,还是有任何其他方法可以减少这笔额外费用?
答案 0 :(得分:2)
您需要关闭连接。通常,池返回包装到另一个对象中的连接。而且,当您在包装器上调用close
时,它只是将内部数据库连接标记为空闲并将其返回到池中。
如果现有PreparedStatement
对象相同,则可以重复使用。如果您的每个任务都必须使用其唯一的PreparedStatement
(由于业务逻辑),那么别无选择,您必须为每个任务创建新的PreparedStatement
。