我想使用准备好的语句。我已经读过准备好的语句的优点是它们不必每次都再次解析/编译,因此可以减少负载。现在我的问题是,在 Java 中还是在我的数据库系统中,已经准备好的语句的“识别”发生在哪里?我问,因为我想知道在我的代码中将我的 PreparedStatement 对象存储在哪里:作为类属性并为每个请求设置参数,或者在有请求时创建一个新的准备好的语句对象。
public class Option1 {
private PreparedStatement myStatement;
public Option1() {
// create the myStatement object
myStatement = conn.prepareStatement("");
}
public List<Items> query() {
// just use the myStatement object
myStatement.setString(1, "foo");
}
}
public class Option2 {
public List<Items> query() {
PreparedStatement myLocalStatement = conn.prepareStatement("");;
// create and use the statement
myLocalStatement.setString(1, "foo");
}
}
现在我的问题是,选择 1 或 2 更好的方法是什么?但是,我必须在每次执行后做一个“清理”,做myStatement.close()
对吗?
也许我应该换个方式问它:如何以最有效的方式重用它?
更新:如果有两个答案,一个更喜欢选项 1 和一个选项 2,我恳请社区投票支持他们的选择 ^^