Best approach for returning connection objects to HikariCP pool

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.

Leave a Comment