Menggunakan c3p0 dengan Hibernate

1. Ikhtisar

Cukup mahal untuk membuat koneksi database. Pengumpulan koneksi database adalah cara yang mapan untuk menurunkan pengeluaran ini.

Dalam tutorial ini, kita akan membahas bagaimana menggunakan c3p0 dengan Hibernate ke koneksi pool.

2. Apakah c3p0 itu?

c3p0 adalah pustaka Java yang menyediakan cara mudah untuk mengelola koneksi database .

Singkatnya, ini mencapai ini dengan membuat kumpulan koneksi. Ini juga secara efektif menangani pembersihan Pernyataan dan ResultSet setelah digunakan. Pembersihan ini diperlukan untuk memastikan bahwa penggunaan sumber daya dioptimalkan dan kebuntuan yang dapat dihindari tidak terjadi.

Pustaka ini terintegrasi secara mulus dengan berbagai driver JDBC tradisional. Selain itu, ini menyediakan lapisan untuk mengadaptasi driver JDBC berbasis DriverManager ke skema javax.sql.DataSource yang lebih baru .

Dan, karena Hibernate mendukung koneksi ke database melalui JDBC, sangat mudah untuk menggunakan Hibernate dan c3p0 secara bersamaan.

3. Konfigurasi c3p0 Dengan Hibernate

Sekarang mari kita lihat cara mengkonfigurasi aplikasi Hibernate yang ada untuk menggunakan c3p0 sebagai manajer koneksi database-nya.

3.1. Dependensi Maven

Pertama, pertama-tama kita perlu menambahkan dependensi hibernate-c3p0 maven:

 org.hibernate hibernate-c3p0 5.3.6.Final 

Dengan Hibernate 5, menambahkan dependensi di atas sudah cukup untuk mengaktifkan c3p0. Hal ini benar selama tidak ada pengelola kumpulan koneksi JDBC lain yang ditentukan.

Oleh karena itu, setelah kami menambahkan ketergantungan, kami dapat menjalankan aplikasi kami dan memeriksa log:

Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] Initializing c3p0 pool... [email protected] [ ... default settings ... ]

Jika pengelola kumpulan koneksi JDBC lain sedang digunakan, kami dapat memaksa aplikasi kami untuk menggunakan c3p0. Kami hanya perlu menyetel provider_class ke C3P0ConnectionProvider di file properti kami:

hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider

3.2. Properti Connection Pool

Akhirnya, kita perlu mengganti konfigurasi default. Kami dapat menambahkan properti khusus ke file hibernate.cfg.xml :

5 20 5 1800

Demikian pula, file hibernate.properties dapat berisi pengaturan yang sama:

hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.acquire_increment=5 hibernate.c3p0.timeout=1800

The MIN_SIZE properti menentukan jumlah minimum koneksi harus menjaga pada waktu tertentu. Secara default, ini akan mempertahankan setidaknya tiga koneksi . Pengaturan ini juga menentukan ukuran awal kolam.

The max_size properti menentukan jumlah maksimum koneksi dapat mempertahankan pada waktu tertentu. Secara default, ini akan menyimpan maksimal 15 koneksi .

The acquire_increment menspesifikasikan properti berapa banyak koneksi harus mencoba untuk memperoleh jika kolam kehabisan tersedia koneksi. Secara default, ini akan mencoba memperoleh tiga koneksi baru.

The batas waktu properti menentukan jumlah detik koneksi yang tidak terpakai akan disimpan sebelum dibuang. Secara default, koneksi tidak akan pernah kedaluwarsa dari pool.

Kami dapat memverifikasi pengaturan kolam baru dengan memeriksa log lagi:

Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] Initializing c3p0 pool... [email protected] [ ... new settings ... ]

Ini adalah properti kumpulan koneksi dasar. Selain itu, properti konfigurasi lainnya dapat ditemukan di panduan resmi.

5. Kesimpulan

Pada artikel ini, kami telah membahas cara menggunakan c3p0 dengan Hibernate. Kami telah melihat beberapa properti konfigurasi umum dan menambahkan c3p0 ke aplikasi pengujian.

Untuk sebagian besar lingkungan, kami merekomendasikan penggunaan pengelola kumpulan koneksi seperti c3p0 atau HikariCP daripada driver JDBC tradisional.

Seperti biasa, kode sumber lengkap untuk tutorial ini tersedia di GitHub.