Во-первых, под капотом каждые дБ используются подготовленные заявления, даже если они созданы на лету и немедленно выброшены.
Во-вторых, вам не следует бояться готовых высказываний. Они предлагают огромный прирост производительности: после создания их можно повторно использовать с различными параметрами, но все разбор, проверка авторизации пользователя, план запроса и оптимизация рассчитываются один раз и сохраняются с подготовленным оператором.
Если вы собираетесь выполнять один и тот же sql снова и снова, создайте подготовленный оператор, сохраните ссылку на него и используйте его повторно - предоставляя разные параметры для каждого вызова.
Вот пример кода, чтобы дать вам представление о том, как его использовать:
private PreparedStatement preparedStatement;
public ResultSet getAccount(String id) throws SQLException {
// Do this once
if (preparedStatement == null)
preparedStatement = conn.prepareStatement("select * from account where id = ?");
// Do this many times
preparedStatement.setString(1, id);
return preparedStatement.executeQuery();
}
public static void main(String[] args) throws Exception {
ResultSet rs = new MyClass().getAccount("00100000006ONCrAAO");
}