简体   繁体   English

使用比预期更多的Maximum JDBC连接池休眠(对于mysql)

[英]Using more Maximum JDBC connection pool Hibernate (For mysql) than expected

Code

    Session session = sessionFactorty.openSession();

    session.beginTransaction();
    session.save(userDetails);
    session.save(userDetails1);
    session.getTransaction().commit();

    session.close();

Hibernate Configuration 休眠配置

<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>

For this configuration, I am getting error : internal connection pool has reached its maximum size 对于此配置,我收到错误消息: 内部连接池已达到其最大大小

INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@2b4c1d96'Exception in thread "main" org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!
at org.hibernate.engine.jdbc.connections.internal.PooledConnections.poll(PooledConnections.java:82)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:186)
at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:48)
at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:125)
at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40)
at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:432)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:105)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:682)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:674)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:669)

Increasing the connection.pool_size to 2 solved the issues. 将connection.pool_size增加到2可解决此问题。 I expected it to use only one connection. 我希望它仅使用一个连接。
Question: Is a expected behaviour ? 问题:这是预期的行为吗? And why it is happening ? 为什么会这样呢?

<property name="hibernate.connection.pool_size">1</property>

将以下行替换为以下(pool_size已从1更改为100)

<property name="hibernate.connection.pool_size">100</property>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM