Best approach for returning connection objects to HikariCP pool

好久不见. 提交于 2019-12-04 17:13:55

问题


I am trying to use HikariCP connection pool. I was able to get it to work and get a connection that I could use. I am not sure what is the best approach for returning the connection to the pool.

I have the following questions:

  • Should I close the connection when I am done, rely on idleTimeout and maxLifetime settings or is there another call that I can use so as not to hog the connections from the pool?
  • If I close the connections (instead of returning to the pool), would that not result in additional connection objects being created to meet the requirements of the connection pool size?

Looking for helpful suggestions.


回答1:


As with most connection pools, Hikari doesn't give you an actual JDBC Connection when you ask for one. What it does instead is give you a proxy that implements the Connection interface. In the case of Hikari - it's a ConnectionProxy object.

This proxy serves a few purposes, the main of which is - take the control of opening/closing connections and statements away from you and into the connection pool. This happens automagically and you should be using your connections as usual. This includes closing them after use.

If you look at the source code for Hikari, at the ConnectionProxy class in particular, you will see that the close() method is very different from the standard one. The code reads as:

Mark the connection as closed, do cleanup, reset underlying connection state and params.

Hence, simply calling close() will just clean and return the connection to the pool.



来源:https://stackoverflow.com/questions/25367261/best-approach-for-returning-connection-objects-to-hikaricp-pool

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!