Use connection pooling and stateless design.
Connection polling allow you to limit the number of connection into your DB by taking then through a limited pool (10 cnx for example).
See the 2.4 section of hibernate reference guide for more information on connection pooling and hibernate.
See
http://jakarta.apache.org/commons/dbcp/ for an alternative implementation
Stateless design
Do not store user specific data into Servlet Sessions (or limit this amount).
Do not let opened session into user servlet session: this will keep the DB connection opened.
You can find more information by googleing those terms. These are very general design strategies (not specific to hibernate)