hibernate+mysql too many connections如何关闭数据库连接?

来源:百度知道 编辑:UC知道 时间:2024/07/11 05:56:33
多次操作数据库之后,就会出现如下的提示:
Data source rejected establishment of connection, message from server: "Too many connections"
org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnectionCaused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
at com.mysql.jdbc.SQLError.createSQLException

程序代码如下(部分):
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();

Crite

楼主因为在hibernate中是Threadlocal管理session的你的session.close()后,Threadlocal的还没有马上请空的,如果你hibernate的session资源不够就很容易产生Too many connections的异常,可以这样解决都可以试试
1添加一个连接池配置文件,增加session线程池的线程数,通过设置
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.max_size">30</property> <——————可以设置大一点
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">1000</property>
<property name="hibernate.c3p0.idle_test_period">30000</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property nam