hibernate连接池问题

时间:2012-02-16 20:22:25

标签: hibernate annotations connection-pooling

对于我的生活,我无法摆脱Hibernate的警告:

849 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)

849 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20

我看了很多其他这样的帖子,但没有任何帮助。我将展示我的配置,也许有人可以看到我不能。

我正在尝试使用C3P0作为连接池框架。我在类路径中有c3p0-0.9.1.jar文件(使用其他hibernate jar)。

以下是我的persistence.xml文件的片段:

<property name="connection.provider_class"
             value="org.hibernate.connection.C3P0ConnectionProvider" /> 
        <property name="hibernate.c3p0.acquire_increment" value="1" />
        <property name="hibernate.c3p0.max_size"  value="20" />
        <property name="hibernate.c3p0.min_size"  value="5" />
        <property name="hibernate.c3p0.timeout"   value="5000" />
        <property name="hibernate.c3p0.max_statements" value="0" />
        <property name="hibernate.c3p0.acquire_increment" value="5" />
        <property name="hibernate.c3p0.idle_test_period" value="300" />
        <property name="hibernate.c3p0.validate" value="false" />

我在我的Entity Pojos上使用JPA注释。所有这一切都很有效,这意味着当我运行我的应用程序时,它运行良好,CRUD操作似乎工作正常等等(它是一个纯Java应用程序。它不是在Tomcat或JBoss等AppServer中运行)。 / p>

但是我非常担心我继续看到“使用内置连接池中的Hibernate”警告并且没有迹象表明C3P0正在运行。例如,我的log4j输出在启动时显示了大量的org.hibernate输出,但根本没有输出C3P0。另一个表明它没有被使用我会想。

在我的应用程序中,我做的第一件事就是创建一个静态的EntityManagerFactory(由内部线程池共享;每个工作线程使用它来创建一个EntityManager来对并发命令执行CRUD操作等。 ..)。在生产环境中,此应用程序将经历大量并发数据库处理活动,因此我必须正确获取数据库连接池。

据我了解,EntityManagerFactory的创建是“启动”连接池机制所需的全部内容。也许这是不正确的?如果是这样,应该我在应用程序中做什么来启动C3P0?

建议/评论欢迎。

提前感谢。

0 个答案:

没有答案