我们都know that我们应该重用 JDBC PreparedStatement
而不是在循环中创建新实例。
但是如何处理不同方法调用之间的PreparedStatement
重用呢?
重用“规则”是否仍然有效?
我真的应该考虑为 PreparedStatement
使用一个字段,还是应该在每次调用时关闭并重新创建准备好的语句(将其保存在本地)?
(当然,此类的实例将绑定(bind)到 Connection
,这在某些体系结构中可能是一个缺点)
我知道理想的答案可能是“视情况而定”。
但我正在为经验不足的开发人员寻找最佳实践,以便他们在大多数情况下都能做出正确的选择。
最佳答案
Of course an instance of such a class would be bound to a Connection which might be a disadvantage
可能是?这将是一个巨大的劣势。您要么需要同步对它的访问,这会扼杀您的多用户性能,要么创建多个实例并将它们保存在一个池中。屁股很痛。
语句池是 JDBC 驱动程序的工作,即使不是全部,大多数当前的驱动程序也会为您完成这项工作。当您调用 prepareStatement
或 prepareCall
时,驱动程序将处理现有资源和预编译语句的重用。
声明
对象绑定(bind)到一个连接,应该尽快使用连接并将其返回到池中。
简而言之,标准做法是在方法开始时获取一个PreparedStatement
,在循环中重复使用它,然后在方法结束时关闭它,是 最佳实践。
关于java - 在方法之间重用 PreparedStatement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647476/