所以我一直听说PreparedStatements对性能有好处.
我们有一个Java应用程序,我们使用常规的'Statement'比使用'PreparedStatement'更多.在尝试使用更多PreparedStatements时,我试图更全面地了解PreparedStatements如何工作 - 在客户端和服务器端.
因此,如果我们有一些典型的CRUD操作并在应用程序中重复更新对象,它是否有助于使用PS?我知道每次都要关闭PS,否则会导致光标泄漏.
那么它对性能有何帮助?驱动程序是否缓存预编译语句,并在下次进行connection.prepareStatement时给我一份副本?或者DB服务器有帮助吗?
我理解关于PreparedStatements的安全性好处的论点,我理解下面强调它的答案.但是,我真的希望将讨论重点放在PreparedStatements的性能优势上.
更新:当我说更新数据时,我真的意味着更多的方法随机被多次调用.我理解下面提供的答案中的优点,它要求在循环中重用语句.
// some code blah blah
update();
// some more code blah blah
update();
....
public void update () throws SQLException{
try{
PreparedStatement ps = connection.prepareStatement("some sql");
ps.setString(1, "foobar1");
ps.setString(2, "foobar2");
ps.execute();
}finally {
ps.close();
}
}
Run Code Online (Sandbox Code Playgroud)
没有办法实际重用'ps'java对象,我理解实际的connection.prepareStatement调用非常昂贵.
这让我回到原来的问题.这个"一些sql"PreparedStatement仍然被缓存并重新使用在我不知道的封面下吗?
我还要提一下,我们支持几个数据库.
提前致谢.
我知道使用的优点PreparedStatement,这些都是
但我想知道我们何时使用它而不是Statement?