JDBC (Java Database Connectivity) adalah Java API yang mengelola koneksi ke database, yang akan mengeluarkan pertanyaan dan perintah, serta menangani hasil yang diperoleh dari database. Dirilis sebagai bagian dari JDK 1.1 pada tahun 1997, JDBC adalah salah satu komponen pertama yang dikembangkan untuk lapisan persistensi Java. JDBC awalnya dipahami sebagai API dari sisi klien, memungkinkan klien Java untuk berinteraksi dengan sumber data. Itu berubah dengan JDCB 2.0, yang termasuk paket opsional yang mendukung koneksi JDBC pada sisi server. Setiap ada rilis versi JDBC yang baru akan menampilkan pembaruan untuk paket klien sebagai (java.sql) dan paket sisi server (javax.sql).

Artikel ini menyajikan tinjauan umum tentang JDBC, diikuti dengan pengenalan langsung tentang penggunaan API JDBC untuk menghubungkan klien Java dengan SQLite, basis data relasional ringan.

Kesalahan yang cukup sering terjadi pada JSBC adalah unable to acquire jdbc connection.

Jika saat ini Anda mengembangkan aplikasi web berbasis data Java dengan Hibernate / JPA dan MySQL. Bisa saja Anda akan menghadapi masalah koneksi (unable to acquire jdbc connection) jika pengguna belum menggunakan aplikasi tersebut untuk waktu yang lama. Lebih kurang terlihat akan terlihat seperti dibawah ini :

Jika Anda me-refresh atau mencoba untuk menyambung kembali, aplikasi akan berhasil terhubung ke database. Akan tetapi masalah unable to acquire jdbc connection akan tetap terjadi lagi . Meskipun ini bukan masalah serius dalam dunia pengembangan aplikasi, tetapi itu tidak baik di bawah perspektif pengguna akhir dan mereka akan melihat aplikasi ini bermasalah .

Cara mengatasi Masalah unable to acquire jdbc connection

1. Meningkatkan nilaibatas waktu yang dikonfigurasi di server .

Cara ini dimungkinkan dengan memperbarui file pengaturan (my.ini) pada server MySQL . Mengubah nilai wait_timeoutv dengan nilai yang lebih lama. Namun, masalah dapat terjadi lagi jika koneksi idle lebih lama dari nilai batas waktu.

2. Gunakan koneksi database c3p0  pooling library.

Jika project Anda berbasis Maven, tambahkan dependensi berikut untuk menggunakan c3p0:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.3.6.Final</version>
</dependency>

unduh di Maven Central Repository, tambahkan file JAR berikut ke classpath project Anda:

hibernate-c3p0-5.3.6.Final.jar

c3p0-0.9.5.2.jar

mchange-commons-java-0.2.11.jar

Kemudian tambahkan properti berikut ini ke file konfigurasi Hibernate / JPA proyek Anda:

<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="20" />
<property name="hibernate.c3p0.timeout" value="300" />

Penjelasan dari property diatas :

– hibernate.c3p0.min_size adalah jumlah minimum koneksi yang dipertahankan di pool pada waktu tertentu.

– hibernate.c3p0.max_size adalah jumlah maksimum koneksi yang dipertahankan dalam kumpulan pada waktu tertentu.

– hibernate.c3p0.timeout adalah jumlah detik koneksi diam disimpan di kolam. Jika koneksi idle lebih lama dari nilai batas waktu ini, maka itu akan diganti dengan yang baru.

Jadi , dari penjelasan diatas berarti Anda harus menetapkan nilai hibernate.c3p0.timeout kurang dari nilai wait_timeout pada server MySQL. Dan nilai 300 detik dalam contoh di atas cukup bagus. Ini jelas memecahkan masalah karena kumpulan tidak menggunakan koneksi yang idle lebih lama dari nilai batas waktu server MySQL. Dan c3p0 dapat digunakan dalam produksi untuk menggantikan kumpulan internal default Hibernate.

LEAVE A REPLY

Please enter your comment!
Please enter your name here