Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menggunakan Semula PreparedStatements dengan Cekap dalam JDBC?

Bagaimana untuk Menggunakan Semula PreparedStatements dengan Cekap dalam JDBC?

Barbara Streisand
Barbara Streisandasal
2024-11-01 01:53:28303semak imbas

 How to Efficiently Reuse PreparedStatements in JDBC?

Menggunakan Semula PreparedStatement Berbilang Kali

Dalam JDBC, PreparedStatement boleh digunakan untuk melaksanakan pernyataan SQL berbilang kali dengan parameter yang berbeza. Terdapat dua pendekatan biasa untuk menggunakan semula PreparedStatement:

Pilihan 1: Cipta dan Tutup PreparedStatement Baharu untuk Setiap Pelaksanaan

<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.

Pilihan 2: Kosongkan Parameter dan Gunakan Semula PreparedStatement

<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.

Pertimbangan Berbilang Benang

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.

Pemprosesan Kelompok

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn