gpt4 book ai didi

java - Hibernate prepareConnection/preparedStatement 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:41 25 4
gpt4 key购买 nike

在我们的项目中,我们已将 Spring 更新为 4.3.14.RELEASE,将 Hibernate 更新为 4.3.11.Final,因为我们开始看到两个警告:

  1. WARN JDBC Connection to reset not identical to originally prepared Connection - please make sure to use connection release mode ON_CLOSE (the default) and to run against Hibernate 4.2+ (or switch HibernateJpaDialect's prepareConnection flag to false

    • 解决方法是将 Release模式切换到ON_CLOSE,这是我们不希望的——当我们的应用程序负载很重时,它会在某个时候停止释放连接,应用程序会卡住。这适用于 Release模式 AFTER_TRANSACTION。
    • 消息没有说明如果忽略此错误会发生什么。谷歌搜索没有显示任何确定的信息
    • 如果我们将 prepareConnection 标志切换为 false 会发生什么?我试图在 Hibernate 配置中找到这样的标志,但找不到。
  2. GooGooStatementCache:441 - Multiply prepared statement!

    • 此警告与上一个警告有关吗?这是我们应该担心的事情吗?

编辑:我将 Hibernate 更新为 5.2.13.Final

最佳答案

这里是多重准备语句的解释(来自 GooGooStatementCache source ):

The same statement has already been prepared by this Connection, and that other instance has not yet been closed, so the statement pool has to prepare a second PreparedStatement object rather than reusing the previously-cached Statement. The new Statement will be cached, in case you frequently need multiple copies of this Statement.

在英语中,这意味着相同的 PreparedStatement 在来自相同 的相同 PreparedStatement 之前从 Connection 中 check out 已 checkin 连接。这是不寻常的。通常只有一个客户端和 Thread 一次与 Connection 交互,并且通常会重用相同的 PreparedStatement(重置其参数)如果它需要多次。发生这种情况最可能的原因可能是因为应用程序没有close()它打开的PreparedStatement,依赖c3p0在Connection<上清理它们签到。

无论如何,这不是正确性问题,c3p0 会很好地处理这种情况。但它可能反射(reflect)了可以稍微清理一下的代码(通过 close()-ing PreparedStatement 在使用后立即或重新使用它们)以提高内存效率和资源使用。如果您使用的是当前版本 (0.9.5.2),c3p0 应该会向您显示有问题的 PreparedStatement 的文本。


我不知道您为什么会看到 Spring/Hibernate 警告。 c3p0 checkout 的 Connection 是代理,但它们的身份在客户端可见的生命周期内不会改变。看一下 source ,在获取与 Session 关联的 Connection 时有一些反射和间接,然后将其与已 checkout 的进行比较。也许某些原因导致 Session 刷新其关联的 Connection,即使 ConnectionSession 正在使用中?我希望我能提供更多帮助,但我不确定发生了什么。

关于java - Hibernate prepareConnection/preparedStatement 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com