-2
私は開発中に不思議に思っていたSpringでPreparedStatementSetterとPreparedStatementCreatorの方が効率的ですか?
これは、より効率的なPreparedStatementSetter(Object)とPreparedStatementCreator(Object)とSpringフレームワークで安全ですか?
私は開発中に不思議に思っていたSpringでPreparedStatementSetterとPreparedStatementCreatorの方が効率的ですか?
これは、より効率的なPreparedStatementSetter(Object)とPreparedStatementCreator(Object)とSpringフレームワークで安全ですか?
両方を併用することができます。 PreparedStatementCreatorを使用してPreparedStatementオブジェクトを作成します。次にPreparedStatementSetterを実行してパラメータ値を設定します。
String machaceksName = (String) jdbcTemplate.query(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
return connection
.prepareStatement("select first_name from customer where last_name like ?");
}
}, new PreparedStatementSetter() {
public void setValues(PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setString(1, "Mach%");
}
}, new ResultSetExtractor() {
public Object extractData(ResultSet resultSet) throws SQLException, DataAccessException {
if (resultSet.next()) {
return resultSet.getLong(1);
}
return null;
}
});
私はそれがPreparedStatementCreatorを作成するための時間/メモリ支出を最小化するようなパラメータ値を設定するために準備文のSQLクエリとPreparedStatementSetterの使用を渡すことを好むだろう。
int r = jdbcTemplate.update(SQL_INSERT, new PreparedStatementSetter() {};
私はあなたがその違いを知ることができるとは思っていません。パフォーマンスは、データベースとの通信およびアクセス・プランのパフォーマンスによって完全に管理されます。より便利なものを使用する*。早すぎる最適化に注意してください。 – Andreas
内部的に常に 'PreparedStatement'が使用されます。追加のロジックを必要とする複雑なクエリを書くのでない限り、自分で行う必要はありません。それ以外の場合は、 'query(String、...)'メソッドを使用してください。 –