Dalam JDBC, PreparedStatement boleh digunakan untuk melaksanakan pernyataan SQL berbilang kali dengan parameter yang berbeza. Terdapat dua pendekatan biasa untuk menggunakan semula PreparedStatement:
<code class="java">for (int i = 0; i < 1000; i++) { PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); preparedStatement.close(); }
Pendekatan ini mengekalkan kuasa kenyataan yang disediakan sambil memastikan setiap pelaksanaan adalah terpencil. Walau bagaimanapun, ia memerlukan mencipta dan menutup objek PreparedStatement baharu untuk setiap pelaksanaan, yang boleh menjadi tidak cekap.
<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();
Pendekatan ini lebih cekap sejak ia menggunakan semula objek PreparedStatement yang sama, mengelakkan overhed mencipta dan menutup penyata beberapa kali. Walau bagaimanapun, ia memerlukan mengosongkan parameter secara manual sebelum setiap pelaksanaan.
Apabila menggunakan pernyataan yang disediakan dalam persekitaran berbilang benang, adalah penting untuk mengendalikan keselamatan benang. Untuk mengelakkan keadaan perlumbaan dan rasuah data, anda disyorkan untuk menggunakan kumpulan sambungan, yang mengurus sambungan dan sumber khusus benang.
Untuk operasi pukal, melaksanakan berbilang pernyataan SQL sebagai satu kelompok adalah sangat cekap. Daripada melaksanakan setiap pernyataan secara individu, anda boleh melaksanakannya sebagai satu 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>
Pemprosesan kelompok dengan ketara mengurangkan overhed mencipta dan melaksanakan berbilang pernyataan SQL, yang membawa kepada prestasi yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Semula PreparedStatements dengan Cekap dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!