Hibernate 是否为每个数据库查询初始化c3p0池?

Hibernate 是否为每个数据库查询初始化c3p0池?,hibernate,postgresql-9.1,c3p0,Hibernate,Postgresql 9.1,C3p0,我正在使用postgresql+hibernate+c3p0进行池管理 我可以看到,对于每个数据库查询,c3p0都在初始化,根据我的理解,这应该发生一次,而不是每个查询,否则拥有连接池的意义何在。如果我错了,请改正 相关信息: <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property> &

我正在使用postgresql+hibernate+c3p0进行池管理

我可以看到,对于每个数据库查询,c3p0都在初始化,根据我的理解,这应该发生一次,而不是每个查询,否则拥有连接池的意义何在。如果我错了,请改正

相关信息:

    <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();
    }
org.hibernate.c3p0.internal.C3P0ConnectionProvider
5.
20
1800
0
1500
SessionFactory SessionFactory=新配置().configure().buildSessionFactory()//创建会话工厂对象
Session Session=sessionFactory.openSession();
试一试{
String query=“SQL query here!!!”;
list=session.createQuery(query.list();
}捕获(休眠异常e){
System.out.println(“发生异常”);
e、 printStackTrace();
}
最后{
session.close();
sessionFactory.close();
}
ar 10201612:45:13 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity 警告:HH90000012:已识别过时的hibernate命名空间。改用名称空间。对过时的DTD/XSD命名空间的支持可以随时删除。 2016年3月10日12:45:13 AM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator实例化ExplicitConnectionProvider 信息:HH000130:实例化显式连接提供程序:org.hibernate.c3p0.internal.C3P0ConnectionProvider 2016年3月10日12:45:13 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider配置 信息:HHH010002:C3P0使用驱动程序:org.postgresql.driver,URL:jdbc:postgresql://localhost:5432/test 2016年3月10日12:45:13 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider配置 信息:HHH10001001:连接属性:{user=postgres,password=**} 2016年3月10日12:45:13 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider配置 信息:HHH10001003:自动提交模式:错误 2016年3月10日12:45:14 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider配置 信息:HHH10001007:JDBC隔离级别: 2016年3月10日12:45:14 AM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
信息:正在初始化c3p0池。。。com.mchange.v2.c3p0。PoolBackedDataSource@2b918bfb[connectionPoolDataSource->com.mchange.v2.c3p0。WrapperConnectionPoolDataSource@e2340fd6 [acquireIncrement->3,AcquireEntryAttributes->30,AcquireEntryDisplay->1000,自动提交关闭->假,自动测试表->空,在AcquireFailure->假,签出超时->0,connectionCustomizerClassName->空,ConnectionTestClassName->com.mchange.v2.c3p0.impl.DefaultConnectionTester,DebuggeUnreturnedConnectionsTackTraces->false,factoryClassLocation->null,ForceIgnoreUnsolvedTransactions->false,identityToken->1hgf08x9fpqzsmd1pj0rtd | 571a34ba,idleConnectionTestPeriod->500,initialPoolSize->5,maxAdministrativeTaskTime->0,maxConnectionAge->0,maxIdleTimeExcessConnections->->0,maxPoolSize->20,maxStatements->0,MaxStatementtsPerConnection->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,属性->{user=*******,password=******}],preferredTestQuery->null,propertyCycle->0,statementCacheNumDeferredCloseThreads->0,testConnectionOnCheckin->false,testConnectionOnCheckout->false,unreturnedConnectionTimeout->0,UseStraditionalReflectionProxies->false;用户覆盖:{}],dataSourceName->null,factoryClassLocation->null,identityToken->1hgf08x9fpqzsmd1pj0rtd | 5f1ff580,numHelperThreads->3]

我没有看到完整的代码。但我相信下面这行代码 SessionFactory SessionFactory=新配置().configure().buildSessionFactory();
将创建自己的池。您可以将该行放在静态块中。

c3p0将创建一个连接池并重新使用连接,因为没有完整的代码,而且您提供的日志中没有显示重新优化的迹象,我可以假设您没有使用SessionFactory。

感谢指针。这一定是凯斯。非常感谢你的帮助。我一定会检查的。谢谢你的指针。一定是这样。非常感谢你的帮助。我一定会检查的。