Sumber artikel: Forum Database Penulis: jackma
Java Database Connectivity (JDBC) API adalah serangkaian antarmuka yang memungkinkan pemrogram Java mengakses database. Antarmuka dari berbagai pengembang tidak persis sama. Setelah menggunakan JDBC Oracle selama bertahun-tahun, saya telah mengumpulkan banyak keterampilan yang memungkinkan kita memanfaatkan kinerja sistem dengan lebih baik dan mencapai lebih banyak fungsi.
1. Gunakan driver Thin dalam pengembangan perangkat lunak klien
Dalam hal pengembangan perangkat lunak Java, database Oracle menyediakan empat jenis driver, dua untuk perangkat lunak klien seperti perangkat lunak aplikasi, applet, dan servlet, dan dua lainnya untuk perangkat lunak sisi server seperti prosedur tersimpan Java dalam database. Dalam pengembangan perangkat lunak sisi klien, kita dapat memilih driver OCI atau driver Thin. Driver OCI menggunakan Java Localization Interface (JNI) untuk berkomunikasi dengan database melalui perangkat lunak klien Oracle. Driver Thin adalah driver Java murni yang berkomunikasi langsung dengan database. Untuk kinerja maksimal, Oracle merekomendasikan penggunaan driver OCI dalam pengembangan perangkat lunak klien, dan ini tampaknya benar. Namun saya menyarankan untuk menggunakan driver Thin, karena melalui banyak pengujian ditemukan bahwa performa driver Thin melebihi driver OCI dalam keadaan normal.
2. Matikan fungsi pengiriman otomatis untuk meningkatkan kinerja sistem
Saat Anda pertama kali membuat sambungan ke database, sambungan berada dalam mode komitmen otomatis secara default. Untuk kinerja yang lebih baik, Anda dapat mematikan fitur komitmen otomatis dengan memanggil metode setAutoCommit() kelas Connection dengan parameter Boolean false, seperti yang ditunjukkan di bawah ini:
samb.setAutoCommit(false);
Perlu dicatat bahwa setelah fungsi komit otomatis dimatikan, kita perlu mengelola transaksi secara manual dengan memanggil metode commit() dan rollback() dari kelas Connection.
3. Gunakan objek Pernyataan dalam SQL dinamis atau perintah berbatas waktu
Saat menjalankan perintah SQL, kami memiliki dua opsi: Anda dapat menggunakan objek PreparedStatement atau objek Pernyataan. Tidak peduli berapa kali Anda menggunakan perintah SQL yang sama, PreparedStatement hanya mem-parsing dan mengkompilasinya sekali. Saat menggunakan objek Pernyataan, setiap kali perintah SQL dijalankan, perintah tersebut diuraikan dan dikompilasi. Ini mungkin membuat Anda berpikir bahwa menggunakan objek PreparedStatement lebih cepat dibandingkan menggunakan objek Statement. Namun, pengujian yang saya lakukan menunjukkan bahwa dalam perangkat lunak klien hal ini tidak terjadi. Oleh karena itu, dalam operasi SQL yang terbatas waktu, kecuali perintah SQL diproses secara batch, kita harus mempertimbangkan untuk menggunakan objek Pernyataan.
Selain itu, penggunaan objek Pernyataan juga membuat penulisan perintah SQL dinamis menjadi lebih mudah karena kita dapat menggabungkan string untuk membuat perintah SQL yang valid. Oleh karena itu, saya percaya bahwa objek Pernyataan dapat membuat pembuatan dan pelaksanaan perintah SQL dinamis menjadi lebih mudah.
4. Gunakan fungsi pembantu untuk memformat perintah SQL dinamis
Saat membuat perintah SQL dinamis yang dijalankan menggunakan objek Pernyataan, kita perlu menangani beberapa masalah pemformatan. Misalnya, jika kita ingin membuat perintah SQL yang menyisipkan nama O'Reilly ke dalam tabel, kita harus mengganti tanda "'" di O'Reilly dengan dua tanda "''" yang berurutan. Cara terbaik untuk melakukannya adalah dengan membuat metode pembantu yang melakukan operasi penggantian, lalu menggunakan metode pembantu yang dibuat ketika string koneksi dinyatakan sebagai perintah SQL menggunakan rumus. Demikian pula, kita dapat membuat metode pembantu menerima nilai Tanggal dan kemudian mengeluarkan ekspresi string berdasarkan fungsi to_date() Oracle.
5. Gunakan objek PreparedStatement untuk meningkatkan efisiensi database secara keseluruhan
Saat menggunakan objek PreparedStatement untuk menjalankan perintah SQL, perintah tersebut diuraikan dan dikompilasi oleh database, dan kemudian ditempatkan di buffer perintah. Kemudian, setiap kali objek PreparedStatement yang sama dijalankan, objek tersebut akan diurai lagi, tetapi tidak dikompilasi lagi. Perintah yang telah dikompilasi ditemukan di buffer dan dapat digunakan kembali. Dalam aplikasi tingkat perusahaan dengan jumlah pengguna yang besar, perintah SQL yang sama sering kali dijalankan berulang kali. Pengurangan jumlah kompilasi yang dilakukan dengan menggunakan objek PreparedStatement dapat meningkatkan kinerja database secara keseluruhan. Kecuali jika membuat, menyiapkan, dan menjalankan tugas PreparedStatement di sisi klien membutuhkan waktu lebih lama daripada tugas Statement, saya akan merekomendasikan penggunaan objek PreparedStatement dalam semua kasus kecuali untuk perintah SQL dinamis.
6. Gunakan objek PreparedStatement dalam pemrosesan batch dari operasi penyisipan atau pembaruan berulang <br /> <br /> Jika operasi penyisipan dan pembaruan diproses dalam batch, waktu yang diperlukan untuk operasi tersebut dapat dikurangi secara signifikan. Statement dan CallableStatement yang disediakan oleh Oracle tidak terlalu mendukung pemrosesan batch. Hanya objek PreparedStatement yang benar-benar mendukung pemrosesan batch. Kita dapat memilih pemrosesan batch JDBC standar menggunakan metode addBatch() dan mengeksekusiBatch(), atau memilih metode milik Oracle yang lebih cepat dengan memanfaatkan metode setExecuteBatch() objek PreparedStatement dan metode mengeksekusiUpdate() standar. Untuk menggunakan mekanisme batching milik Oracle, Anda dapat memanggil setExecuteBatch() seperti yang ditunjukkan di bawah ini:
Pernyataan yang Disiapkan pstmt3D null;
mencoba {
((Pernyataan OraclePrepared)
pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}