I have given below the configuration having in mind minimum resource. You need to tailor it according to your application need.
Generally in production release, we need to ensure the removal of unwanted configs which may cause some other problem after release in Live. The configuration should be accurate and don’t use counts blindly maximum.
C3P0 has many configurations, upon that here given the essential ones,
hibernate.connection.provider_class – org.hibernate.connection.C3P0ConnectionProvider
- The above statement is used to specify the C3P0 connection provider. Here we use C3P0ConnnectionProvider class
hibernate.c3p0.max_size – 200
- This one tells the connection pool that it can hold 200 connections at the maximum
hibernate.c3p0.min_size – 10
- This one tells the connection pool that it can hold 10 connections at the minimum. Generally this will vary from (3-20) based on the need.
hibernate.c3p0.acquire_increment – 100
- This determines how many connections the connection pool can acquire when the pool is exhausted.
hibernate.c3p0.idle_test_period – 120
- This will lets the C3P0 to test all the idle and uncheckedout connection in every this specified seconds. If the value is 0, then it won’t test.
hibernate.c3p0.max_statements – 2000
- Its Default value is 0. The value that you specify here is the size of global PreparedStatement cache. For more info: http://www.mchange.com/projects/c3p0/#configuring_statement_pooling
hibernate.c3p0.timeout – 60
- Its Default value is 0. Zero means, idle connections never expire. If the value given is greater than 0, then for the specified seconds the Connection can remain idle in pool but unused before discarded.
hibernate.c3p0.validate – true
- Default value is false. If we specify true, before every transaction gonna happen, it will validate the connection is valid or not. And we need to specify efficient preferredTestQuery.