对于我的生活,我无法摆脱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?
建议/评论欢迎。
提前感谢。