0
我是新来JPA &休眠,我正在执行重置密码操作。在这种情况下,实体对象(用户)得到更新后,我试图登录,但不幸的是,服务器被挂起,我得到了下面的异常。无法释放JDBC连接
javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Unable to release JDBC Connection
下面是我们的持久性文件,配置
<properties>
<!-- Configuring JDBC properties -->
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/dbname?autoReconnect=true&useUnicode=true" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.user" value="username" />
<property name="javax.persistence.jdbc.password" value="password" />
<property name="hibernate.jdbc.batch_size" value="80000" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.use_sql_comments" value="false" />
<property name="hibernate.hbm2ddl.auto" value="none" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.connection.charSet" value="UTF-8" />
<property name="hibernate.max_fetch_depth" value="2" />
<!-- Configuring Connection Pool -->
<property name="hibernate.c3p0.min_size" value="10" />
<property name="hibernate.c3p0.max_size" value="250" />
<property name="hibernate.c3p0.acquire_increment" value="10"/>
<property name="hibernate.c3p0.timeout" value="500" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.idle_test_period" value="2000" />
<!-- Newly added -->
<property name="hibernate.c3p0.maxConnectionAge" value="300"/>
<property name="hibernate.c3p0.maxIdleTimeExcessConnections" value="300"/>
<property name="hibernate.c3p0.testConnectionOnCheckin" value="true"/>
<property name="hibernate.c3p0.preferredTestQuery" value="select 1"/>
<property name="hibernate.c3p0.validate" value="false"/>
<property name="hibernate.c3p0.testConnectionOnCheckout" value="false" />
</properties>
谁能帮助我我做了什么错?我在配置文件中遗漏的任何东西?
谢谢。我发现实体(用户)使用了太多EAGER提取类型的问题,因此执行查询需要太多时间。假设我正在使用18 EAGER提取类型在用户实体中创建Join实体。我们使用从实体管理器分离更新的实体。这是正确的方式吗?或者我们想要做一些优化? –
检查这个http://stackoverflow.com/questions/2990799/difference-between-fetchtype-lazy-and-eager-in-java-persistence-api它可能会帮助,但如果你找到了一种方法,我认为它很好! –
好吧,但在我的情况下,我们希望Eager在提取列表的同时,我们需要避免Eager,同时更新如何实现这一目标?感谢你的信息。 –