Rumah  >  Artikel  >  Java  >  Sekiranya saya membuat PreparedStatements baharu untuk setiap operasi SQL atau menggunakan semula yang sama?

Sekiranya saya membuat PreparedStatements baharu untuk setiap operasi SQL atau menggunakan semula yang sama?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 22:42:02380semak imbas

 Should I create new PreparedStatements for each SQL operation or reuse the same one?

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!

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