I can't seem to get hibernate to use c3p0 for connection pooling, it says
12:30:35,038 INFO DriverManagerConnectionProvider:64 - Using Hibernate built-in connection pool (not for production use!) 12:30:35,038 INFO DriverManagerConnectionProvider:65 - Hibernate connection pool size: 20
Hibernate Config:
<hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xxx?autoReconnect=true</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">xxxx</property> <property name="show_sql">false</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.max_size">200</property> <property name="hibernate.c3p0.max_statements">200</property> <property name="current_session_context_class">thread</property> </session-factory> </hibernate-configuration>
Opening a connection to a database is generally much more expensive than executing an SQL statement. A connection pool is used to minimize the number of connections opened between application and database. It serves as a librarian, checking out connections to application code as needed.
The default connection pool in hibernate is c3p0 named after the star wars character. But hibernate supports also proxool and used to also advertise apache dbcp. For a while DBCP was dormant and fell out of grace. C3P0 is actually used in production in many projects.
c3p0 is a Java library that provides a convenient way for managing database connections. In short, it achieves this by creating a pool of connections. It also effectively handles the cleanup of Statements and ResultSets after use.
hibernate.connection.autocommitAllows autocommit mode to be used for the JDBC connection. If you are using a database along with an application server and JNDI, then you would have to configure the following properties − Sr.No. Properties & Description. 1.
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- datasource config --> <property name="connection.url">jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.username">user</property> <property name="connection.password">pass</property> <!-- c3p0 config http://www.hibernate.org/214.html --> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.acquire_increment">1</property> <property name="hibernate.c3p0.idle_test_period">60</property> <property name="hibernate.c3p0.min_size">1</property> <property name="hibernate.c3p0.max_size">2</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="hibernate.c3p0.timeout">0</property> <property name="hibernate.c3p0.acquireRetryAttempts">1</property> <property name="hibernate.c3p0.acquireRetryDelay">250</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.use_sql_comments">true</property> <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> <property name="hibernate.current_session_context_class">thread</property> ... </session-factory> </hibernate-configuration>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With