Search code examples
hibernatepostgresql-9.1c3p0

Is c3p0 pool initiallised for every database query?


I am using postgresql + hibernate + c3p0 for pool management.

I can see that for every database query, c3p0 is initializing, as per my understanding, this should be happening once, not for every query, otherwise what is the point of having connection pool. Please correct if I am wrong.

Relevent Info :

    <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">1800</property>
    <property name="hibernate.c3p0.max_statements">0</property>
    <property name="hibernate.c3p0.idle_test_period">1500</property>



SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); //create session factory object
    Session session = sessionFactory.openSession();

    try{

    String query = "SQL query here!!!";
    list = session.createQuery(query).list();
    }catch (HibernateException e){
        System.out.println("Exception occured");
         e.printStackTrace();
    }
    finally{
        session.close();
        sessionFactory.close();
    }

ar 10, 2016 12:45:13 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time. Mar 10, 2016 12:45:13 AM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator instantiateExplicitConnectionProvider INFO: HHH000130: Instantiating explicit connection provider: org.hibernate.c3p0.internal.C3P0ConnectionProvider Mar 10, 2016 12:45:13 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure INFO: HHH010002: C3P0 using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/test Mar 10, 2016 12:45:13 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure INFO: HHH10001001: Connection properties: {user=postgres, password=****} Mar 10, 2016 12:45:13 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure INFO: HHH10001003: Autocommit mode: false Mar 10, 2016 12:45:14 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure INFO: HHH10001007: JDBC isolation level: Mar 10, 2016 12:45:14 AM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@2b918bfb [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@e2340fd6 [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hgf08x9fpqzsmd1pj0rtd|571a34ba, idleConnectionTestPeriod -> 500, initialPoolSize -> 5, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@7ee60818 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hgf08x9fpqzsmd1pj0rtd|70605aa2, jdbcUrl -> jdbc:postgresql://localhost:5432/test, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hgf08x9fpqzsmd1pj0rtd|5f1ff580, numHelperThreads -> 3 ]


Solution

  • c3p0 will create a connection pool and re-use the connections, since the full code is not there and nothing in the log you provided gives an indication of re-inialization, I can just assume that you're not re-using the SessionFactory.