As we know that, Opening connection to a database is more expensive than executing SQL statements. A connection pool is used to minimize the number of connections opened between application and database. Your application code needs to be strict about returning connections to the pool when complete, for if it does not do so, your application will run out of available connections.
Hibernate supports following types of connection pooling mechanisms:-
1) c3p0:- Distributed with Hibernate
2) Apache DBCP:- Apache Pool
3) Proxool:- JDBC Pooling Wrapper