在dbcp spring hibernate jdbc中禁用预准备语句?

在dbcp spring hibernate jdbc中禁用预准备语句?,第1张

概述我目前正在增强一个使用spring和hibernate的应用程序.有多个实例,应用程序通过预准备语句与db(postgres)进行通信.应用程序到现在为止,通过dbcp与postgres通信.更改:该应用程序现在通过pgbouncer传达给postgres.即:应用 - > dbcp - > pgbouncer - > Postgres的我知道这不是最理

我目前正在增强一个使用spring和hibernate的应用程序.有多个实例,应用程序通过预准备语句与db(postgres)进行通信.
应用程序到现在为止,通过dbcp与postgres通信.

更改:
该应用程序现在通过pgbouncer传达给postgres.

即:应用 – > dbcp – > pgbouncer – > Postgres的

我知道这不是最理想的解决方案,即:有两个普通人.但由于目前的架构,我们需要它们.

需求:
pgbouncer不支持事务模式中的预准备语句.因此必须被淘汰.

更改以消除准备好的声明.

1)psql:VERSION = 9.2.6

没变

2)pgbouncer:在配置文件中设置以下属性

  ignore_startup_parameters=extra_float_digits  pool_mode=transaction  server_reset_query=

3)jdbc:已相应地设置准备的阈值.
         即:jdbc:postgresql:// localhost:6541 / postgres?prepareThreshold = 0

 JAVA VERSION = 1.7.0_51 JDBC DRIVER  = postgresql-9.3-1102.jdbc41-3.jar

4)dbcp:
          poolPreparedStatements = false
          maxOpenPreparedStatements = 0

5)休眠:没有变化

6)春天:没有变化

问题:

尽管所有这些变化,我仍然看到准备好的陈述试图创建&交易因此而失败.

“错误:预处理语句”S_21“不存在;嵌套异常是org.postgresql.util.PsqlException:错误:预处理语句”S_21“不存在”

我删除了使用预准备语句的所有逻辑更改.

如何防止创建其他预准备语句?
spring或hibernate是否在内部为其使用创建了准备好的语句?如果是,我该如何禁用它们?最佳答案以下配置ia在我的系统上工作,没有任何错误:准备好的语句“S_21”不存在;错误.希望能帮助到你:

> pgBouncer 1.6.1,pool_mode = transaction
>添加到Hibernate db-connection字符串:prepareThreshold = 0
> Postgresql-JDBC 9.4-1203-jdbc41驱动程序
>在Hibernate 4.x中禁用Prepared语句

总结

以上是内存溢出为你收集整理的在dbcp spring hibernate jdbc中禁用预准备语句?全部内容,希望文章能够帮你解决在dbcp spring hibernate jdbc中禁用预准备语句?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)