使用Hibernate和Spring时连接太多

Mar*_*llo 2 java mysql connection spring hibernate

我在我的项目中使用Spring和Hibernate.我用这样的道具

        <prop key="hibernate.hbm2ddl.auto">update</prop>
        <prop key="hibernate.dialect">${chassis.storage.hibernate.dialect}</prop>
        <prop key="hibernate.show_sql">false</prop>
        <prop key="hibernate.jdbc.batch_size">${chassis.storage.hibernate.batch_size}</prop>
        <prop key="hibernate.c3p0.min_size">5</prop>
        <prop key="hibernate.c3p0.max_size">50</prop>
        <prop key="hibernate.c3p0.timeout">300</prop>
        <prop key="hibernate.c3p0.max_statements">50</prop>
        <prop key="hibernate.c3p0.idle_test_period">3000</prop>
Run Code Online (Sandbox Code Playgroud)

当我写一些数据时,我使用这样的代码

    getHibernateTemplate().execute(new HibernateCallback<Void>() {
        @Override
        public Void doInHibernate(Session session) throws HibernateException, SQLException {
            for (Data data : datas) {
                session.persist(data);
            }
            session.flush();
            return null;
        }
    });
Run Code Online (Sandbox Code Playgroud)

但我有一个例外

引起:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:数据源拒绝建立连接,来自服务器的消息:"连接太多"

我使用netstat -an | grep 3306并看到很多连接.有什么问题,您怎么看?

Mar*_*llo 5

问题出在数据源中.我用了

org.springframework.jdbc.datasource.DriverManagerDataSource
Run Code Online (Sandbox Code Playgroud)

现在我用org.apache.commons.dbcp.BasicDataSource它,它完美无缺!

在这里看到类似的问题 - 与HibernateTemplate和SessionFactory的单一数据库连接