java - 准备好的语句以及连接池

标签 java jdbc connection-pooling

我对 Prepared Statement 和连接池的一般使用有疑问。

Prepared Statements 通常只绑定(bind)到一个连接。在我们的应用程序中,PreparedStatement 在启动时创建并在稍后执行。

如果在执行某些特定的准备语句时,与准备语句关联的连接正忙于执行其他语句,而不是执行此所需语句的方式。此语句将等待连接释放还是此语句将被优先执行?

更新

我已经通过使用 Apache derby 数据库跟踪 SLEEP() 函数来测试它,该数据库调用类 TimeHandlingTest 中的 java 函数 sleep 。

CREATE FUNCTION SLEEP() 返回整数语言 JAVA 参数样式 JAVA 无 SQL 外部名称 'com.derby.test.TimeHandlingTest.sleep';

并从一个连接中创建了两个准备好的语句,并从一个准备好的语句和简单的 sql select 中调用了 Sleep() 函数。简单的 sql select 花费了几乎相同的时间(10 秒),而第一个准备好的语句正在 hibernate 。这意味着一个连接对象一次不能被多个准备好的语句执行。如果我错了请纠正我。

最佳答案

如果您计划使用 PreparedStatement,则不能将 Connection 返回到池中。

换句话说:您只能使用从您当前拥有的Connection 构造的PreparedStatement

关于java - 准备好的语句以及连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6094529/

相关文章:

java - 为什么在 Java 中使用管道执行系统命令会在没有空格的情况下失败?

java - 用Jsoup填充数组的方法不等待jsoup完成网站请求

tomcat - 一段时间后回收 JDBC 连接

tomcat - 使用 Elastic Beanstalk 和 Amazon RDS 的连接池

mysql - 如何解决Pool的_connectionQueue过多问题?

Tomcat 服务器中的 Java 8 Web 应用程序内存泄漏问题

java - 如何在不循环的情况下将 Java 中的结果集拆分为 block (每个 block 500 行)?

java - JDBC 连接 : How to specify the port for data-transfer?

java - 数据库连接池中的每个连接是否都由一个线程支持?

java - Logback 属性值未定义