Значение PreparedStatement заключается в способности самой базы данных создавать план выполнения для оператора, который можно повторно использовать для произвольных параметров и, таким образом, является общим по своей природе (конечно, для этого необходимо использовать параметры в своем утверждении, например,
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00);
pstmt.setInt(2, 110592);
Если, с другой стороны, вы будете использовать конкатенацию строк для вставки значений параметров в код SQL, база данных не сможет построить общий план выполнения, поэтому не будет никакой разницы, если выиспользуйте PreparedStatement или Statement, например,
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = 1200 WHERE ID = 3");
не сможет использовать преимущество PreparedStatements.
Ваш вопрос подразумевает, что вы хотите повторно использовать объект PreparedStatement, который не является необходимымКонечно, если вы можете использовать объект PreparedStatement для обновления нескольких значений и т. Д., Это более эффективное использование ресурсов. Тем не менее, продолжительность жизни (или, по крайней мере, полезная продолжительность жизни) PreparedStatement связана с подключением, например, если вы вызываете conn.близко() PreparedStatement становится бесполезным.Тем не менее большинство хороших драйверов в ситуации пула снова используют одни и те же объекты PreparedStatement.Короче говоря, не кэшируйте PreparedStatement независимо от соединения.