Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

2.3. Connection Pooling

2.3.1. About Connection Pooling

Hibernate includes a rudimentary internal connection pooling algorithm for development and testing purposes. Use a third party pool for improved performance and stability.
To set a third party connection pool, replace the hibernate.connection.pool_size property with the appropriate settings for your selected connection pool. Setting a new value automatically disabled Hibernate's internal connection pool.

2.3.2. C3P0 Connection Pool

C3P0 is an open source JDBC connection pool that is distributed with Hibernate. C3P0 is available in the lib/ directory. Hibernate uses org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider for connection pooling if the hibernate.c3p0 connection properties are set.
The following table contains hibernate.c3p0 connection properties to set to use the c3p0 connection pool in Hibernate:

Table 2.7. Configuration Properties for the C3p0 Connection Pool

Property Details
hibernate.c3p0.min_size The minimum number of concurrent connections per connection identity.
hibernate.c3p0.max_size The maximum number of concurrent connections per connection identity.
hibernate.c3p0.timeout The period an idle connection is allowed to remain in the connection pool before it is closed and removed from the pool.
hibernate.c3p0.max_statements The maximum size of the statement cache.

2.3.3. Use JNDI to Obtain a Connection

To use Hibernate inside an application server, configure Hibernate to obtain connections from an application server (javax.sql.Datasource) that is registered in JNDI. Set more than one of the following properties to configure JNDI to obtain a connection:

Table 2.8. JNDI Properties

Property Name Description
hibernate.connection.datasource Datasource JNDI name (mandatory).
hibernate.jndi.url URL of the JNDI provider (optional).
hibernate.jndi.class Class of the JNDI InitialContextFactory (optional).
hibernate.connection.username Database user (optional).
hibernate.connection.password Database user's password (optional).

2.3.4. Other Connection Specific Configurations

Pass custom connection properties by appending the name of the new property to hibernate.connection. For example, to specify a charSet property, specify a new charSet connection property names hibernate.connection.charSet.
Pass custom plugin strategies to obtain JDBC connections by implementing the org.hibernate.service.jdbc.connections.spi.ConnectionProvider and by specifying a custom implementation with the hibernate.connection.provider_class property.