Menggunakan c3p0 dengan Hibernate

1. Gambaran keseluruhan

Agak mahal untuk membuat sambungan pangkalan data. Pengumpulan sambungan pangkalan data adalah kaedah yang mantap untuk menurunkan perbelanjaan ini.

Dalam tutorial ini, kita akan membincangkan cara menggunakan c3p0 dengan Hibernate untuk mengumpulkan sambungan.

2. Apa itu c3p0?

c3p0 adalah perpustakaan Java yang menyediakan cara mudah untuk menguruskan sambungan pangkalan data .

Ringkasnya, ini dapat dicapai dengan mewujudkan kumpulan hubungan. Ia juga berkesan menangani pembersihan Penyata dan ResultSet setelah digunakan. Pembersihan ini diperlukan untuk memastikan penggunaan sumber dioptimumkan dan kebuntuan yang tidak dapat dielakkan tidak berlaku.

Perpustakaan ini bergabung dengan pelbagai pemacu JDBC tradisional. Selain itu, ia menyediakan lapisan untuk menyesuaikan pemacu JDBC berasaskan DriverManager ke skema javax.sql.DataSource yang lebih baru .

Oleh kerana Hibernate menyokong penyambungan ke pangkalan data melalui JDBC, mudah untuk menggunakan Hibernate dan c3p0 bersama-sama.

3. Mengkonfigurasi c3p0 Dengan Hibernate

Sekarang mari kita lihat bagaimana mengkonfigurasi aplikasi Hibernate yang ada untuk menggunakan c3p0 sebagai pengurus sambungan pangkalan data.

3.1. Ketergantungan Maven

Pertama, kita perlu menambahkan kebergantungan hibernate-c3p0 maven:

 org.hibernate hibernate-c3p0 5.3.6.Final 

Dengan Hibernate 5, hanya menambahkan kebergantungan di atas sudah cukup untuk mengaktifkan c3p0. Ini berlaku selagi tidak ada pengurus kumpulan sambungan JDBC lain yang ditentukan.

Oleh itu, setelah kita menambahkan kebergantungan, kita dapat menjalankan aplikasi kita 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 ... ]

Sekiranya pengurus kumpulan sambungan JDBC lain sedang digunakan, kami dapat memaksa aplikasi kami menggunakan c3p0. Kami hanya perlu menetapkan provider_class ke C3P0ConnectionProvider dalam fail hartanah kami:

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

3.2. Sambungan Kolam Sambungan

Akhirnya, kita perlu mengatasi konfigurasi lalai. Kita boleh menambahkan sifat khas ke fail hibernate.cfg.xml :

5 20 5 1800

Begitu juga, fail hibernate.properties boleh mengandungi tetapan yang sama:

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

The MIN_SIZE harta menetapkan bilangan minimum Kenalan ia perlu mengekalkan sekurang-bila-bila masa. Secara lalai, ia akan mengekalkan sekurang-kurangnya tiga sambungan . Tetapan ini juga menentukan ukuran awal kolam.

The MAX_SIZE harta menentukan bilangan maksimum sambungan ia boleh mengekalkan pada bila-bila masa. Secara lalai, ia akan menyimpan maksimum 15 sambungan .

The acquire_increment dinyatakan oleh harta bagaimana banyak sambungan ia harus cuba untuk memperoleh jika kolam kehabisan sambungan tersedia. Secara lalai, ia akan berusaha memperoleh tiga sambungan baru.

Masa tamat masa menentukan bilangan saat sambungan yang tidak digunakan akan disimpan sebelum dibuang. Secara lalai, sambungan tidak akan habis dari kolam.

Kami dapat mengesahkan tetapan kumpulan baru dengan memeriksa log sekali 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 sifat kumpulan sambungan asas. Di samping itu, sifat konfigurasi lain boleh didapati dalam panduan rasmi.

5. Kesimpulan

Dalam artikel ini, kami telah membincangkan cara menggunakan c3p0 dengan Hibernate. Kami telah melihat beberapa sifat konfigurasi biasa dan menambahkan c3p0 ke aplikasi ujian.

Untuk kebanyakan persekitaran, kami mengesyorkan menggunakan pengurus kumpulan sambungan seperti c3p0 atau HikariCP dan bukannya pemacu JDBC tradisional.

Seperti biasa, kod sumber lengkap untuk tutorial ini terdapat di GitHub.