我可以在Java中使用针对任意数据库连接的预准备语句吗?

时间:2014-01-17 20:52:30

标签: java sql oracle11g

[Java 7 / Oracle]我有一个多线程应用程序,我计划在其中使用数据库连接池。我想用准备好的陈述;但是,似乎预编译语句包含并因此似乎与单个数据库连接对象密不可分。我想要的范例是 NOT “打开一个连接,准备一个语句,做几千次相同的查询,然后关闭连接”,似乎是所有地方的示例代码;我想要的范例是“预先编译这个语句,以便尽可能高效地运行 - 从池中获取随机连接 - 对该连接执行语句 - 将连接释放回池”。这在Java中甚至可能吗?

1 个答案:

答案 0 :(得分:2)

如果使用连接池,则在连接对象上调用close时,实际上并未关闭连接。而是返回到池中。这通常是通过将原始连接包裹在代理中来实现的,该代理拦截您对close的呼叫。

许多连接池和一些驱动程序提供了缓存预准备语句的可能性,以解决持续准备相同语句的问题。当然,因为预准备语句与连接相关联,所以您可能会为池中的每个连接预先创建相同的语句。