池中所有使用的连接都处于休眠状态,并创建了新连接

All used connections in pool are sleepy & new connections are created

我们正在使用 c3p0 池化和 Hibernate。但是休眠并没有重新使用池中的连接。当我看到 mysql-workbench 的客户端连接时,我可以看到它们中的大部分都处于“Sleep”状态。池随着时间的推移不断增长,按照我指定的增量,直到我最终 运行 退出。

这是数据配置的片段:

persistenceMap.put(
    "connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider"
);
persistenceMap.put("hibernate.c3p0.min_size", "1");
persistenceMap.put("hibernate.c3p0.max_size", "5");
persistenceMap.put("hibernate.c3p0.timeout", "5");
persistenceMap.put("hibernate.c3p0.max_statements", "20");
persistenceMap.put("hibernate.c3p0.acquire_increment", "1");
persistenceMap.put("hibernate.c3p0.maxIdleTimeExcessConnections", "3");

MYSQL - Workbench --> 客户端连接:

请帮助/建议。

以下解决方案似乎对我有用

连接池 Jar 已更新。

  • c3p0-0.9.2.1
  • hibernate-c3p0-5.1.0.Final
  • mchange-commons-java-0.2.3.4

持久性属性已更改如下。 持久性属性

persistenceMap.put("javax.persistence.jdbc.url","jdbc:mysql://localhost:3306/test_db");
persistenceMap.put("javax.persistence.jdbc.user", "root");
persistenceMap.put("javax.persistence.jdbc.password", "root");
persistenceMap.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
persistenceMap.put("hibernate.show_sql", "true");
persistenceMap.put("hibernate.format_sql", "true");
persistenceMap.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
persistenceMap.put("hibernate.hbm2ddl.auto", "validate");

persistenceMap.put("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider");
persistenceMap.put("hibernate.c3p0.min_size", "1");
persistenceMap.put("hibernate.c3p0.max_size", "20");
persistenceMap.put("hibernate.c3p0.timeout", "10");
persistenceMap.put("hibernate.c3p0.max_statements", "50");

仅供参考... 我在用 OS: Ubuntu Java版本:8 休眠版本:5.1.0