Rumah > Java > javaTutorial > teks badan

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

Patricia Arquette
Lepaskan: 2024-10-31 22:42:02
asal
321 orang telah melayarinya

 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();
}
Salin selepas log masuk

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();
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!