Menggunakan Semula Penyata Disediakan untuk Berbilang Operasi
Dalam senario di mana satu sambungan digunakan tanpa kumpulan sambungan, terdapat persoalan mengenai pendekatan untuk mencipta dan menggunakan PreparedStatements. Satu pilihan adalah untuk mencipta contoh PreparedStatement baharu untuk setiap operasi SQL/DML:
<code class="java">for (int i=0; i<1000; i++) { PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); preparedStatement.close(); }
Sebagai alternatif, contoh PreparedStatement yang sama boleh digunakan semula dengan mengosongkan parameternya dan menetapkan semula nilai:
<code class="java">PreparedStatement preparedStatement = connection.prepareStatement(sql); for (int i=0; i<1000; i++) { preparedStatement.clearParameters(); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); } preparedStatement.close();
Pengesyoran dan Pertimbangan Berbilang Benang
Untuk kecekapan optimum, pertimbangkan untuk melaksanakan operasi PreparedStatement dalam kelompok:
<code class="java">public void executeBatch(List<Entity> entities) throws SQLException { try ( Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL); ) { for (Entity entity : entities) { statement.setObject(1, entity.getSomeProperty()); // ... statement.addBatch(); } statement.executeBatch(); } }</code>
Apabila bekerja dengan persekitaran berbilang benang, adalah penting untuk memperoleh dan sambungan rapat dan pernyataan dalam skop sesingkat mungkin dalam blok kaedah yang sama. Mengikuti simpulan bahasa JDBC menggunakan cuba-dengan-sumber memastikan pengurusan sumber dikendalikan dengan sewajarnya.
Untuk kelompok transaksi, lumpuhkan autokomit pada sambungan dan komit hanya selepas semua kelompok berjaya diselesaikan untuk mengelakkan kemungkinan ketidakkonsistenan pangkalan data.
Atas ialah kandungan terperinci Sekiranya saya membuat PreparedStatements baharu untuk setiap operasi SQL atau menggunakan semula yang sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!