5.1 Pembuatan skema data otomatis
Saat pertama kali mengonfigurasi Hibernasi, Anda dapat mengaktifkan banyak pengaturan menarik. Saya tidak membawa mereka sebelumnya, agar tidak menyemprot. Tetapi pada akhir level saya memikirkan beberapa dari mereka untuk diceritakan.
Pengaturan seperti pertama adalah hbm2ddl.auto
. Itu dapat memiliki 5 nilai berbeda:
mengesahkan | Validasi: Hibernasi akan memeriksa apakah nama dan jenis kolom dan bidang cocok di database dan di anotasi. Ini adalah modus yang paling umum. |
memperbarui | Pembaruan: Hibernasi akan memperbarui tabel dalam database jika tabel atau kolomnya berbeda dari yang diharapkan. |
membuat | Buat Ulang: Hibernasi akan menghapus semua tabel dalam database dan membuatnya kembali berdasarkan data dari anotasi. |
buat-jatuhkan | Pembuatan-penghapusan. Di awal pekerjaan, Hibernate akan membuat semua tabel, di akhir pekerjaan, itu akan menghapusnya sendiri. |
tidak ada | Hibernasi tidak akan melakukan apa pun. Jika di suatu tempat basis tidak sesuai dengan harapan, maka kesalahan akan terjadi selama eksekusi kueri. |
5.2 Mencatat permintaan
Pengaturan Hibernasi kedua yang sangat berguna adalah mencatat semua permintaannya ke database: semua permintaan ke database digandakan di konsol. Ini adalah fitur yang sangat berguna jika Anda membuat perubahan pada kode terkait Hibernasi.
Pertama, Anda akan lebih memahami bagaimana kueri Anda dikonversi ke SQL. Kedua, lebih mudah dan sebelumnya Anda dapat menemukan kesalahan. Dan mereka pasti akan melakukannya. Hibernasi tidak selalu berfungsi seperti yang kita harapkan. Ini terutama sering dikaitkan dengan anotasi: Anda memahaminya dengan cara Anda sendiri, dan Hibernasi dengan cara Anda sendiri.
Pengaturan yang mengaktifkan logging disebut hibernate.show_sql
. Jika Anda menyetel nilainya ke true, kueri ke database akan ditulis ke konsol. Parameter ini juga digunakan bersamaan dengannya hibernate.format_sql
, yang memungkinkan Anda menyetel format kueri SQL yang nyaman di log.
Cara lain untuk mencatat permintaan ke database adalah dengan menggunakan logger standar . Semuanya memberikan fakta bahwa Hibernate sudah menulis kuerinya ke logger standar, tetapi hanya dengan ruang lingkup - DEBUG. Anda perlu mengubah dua properti di logger standar Anda:
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
Mengubah level BasicBinder menjadi trace
akan menambahkan parameter kueri kepada kami, namun, dalam bentuk yang sedikit tidak biasa - pencacahan berurutan setelah kueri itu sendiri.
Pendekatan ketiga adalah dengan menggunakan driver proxy khusus untuk database .
Misalnya, log4jdbc
atau p6spy
. Kedua proxy berfungsi dan memiliki permulaan, meskipun log4jdbc
tidak ada komitmen untuk waktu yang lama pada saat penulisan.
<dependency>
<groupId>com.integralblue</groupId>
<artifactId>log4jdbc-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.gavlyukovskiy</groupId>
<artifactId>p6spy-spring-boot-starter</artifactId>
</dependency>
Saya tidak akan merinci, saya hanya ingin Anda tahu bahwa ini mungkin.
5.3 Dialek SQL
Dan beberapa informasi latar belakang lainnya.
Hibernate mendukung sejumlah besar DBMS. Masing-masing mengimplementasikan seperangkat fungsi SQL standar dan beberapa lagi milik mereka sendiri. Atau versi SQL yang berbeda. Oleh karena itu, untuk bekerja dengan DBMS ini, Anda perlu memberi tahu Hibernate dialek bahasa SQL mana yang akan digunakan.
Berikut adalah daftar dialek yang paling populer:
PostgreSQL | org.hibernate.dialect.PostgreSQLDialect |
SAP DB | org.hibernate.dialect.SAPDBDialect |
Sybase | org.hibernate.dialect.SybaseDialect |
Informix | org.hibernate.dialect.InformixDialect |
Microsoft SQLServer 2008 | org.hibernate.dialect.SQLServer2008Dialect |
MySQL | org.hibernate.dialect.MySQLDialect |
Oracle (versi apa pun) | org.hibernate.dialect.OracleDialect |
Oracle 11g | org.hibernate.dialect.Oracle10gDialect |
Tentu saja, ada sejumlah dialek seperti itu. Anda dapat menulis DBMS Anda sendiri dan dialek Anda sendiri untuk itu.
Mengapa penting untuk menentukan dialek yang benar?
Setiap database mungkin memiliki tipe data yang sedikit berbeda. Oleh karena itu, agar Hibernasi bekerja dengan sempurna persis seperti yang Anda harapkan darinya, Anda perlu memberi tahu dialek bahasa SQL mana yang perlu digunakan.
Berikut adalah gambar menarik yang menunjukkan bagaimana semuanya terhubung dalam kenyataan:

5.4 Pengaturan populer
Untuk membuat hidup Anda lebih mudah, berikut adalah daftar lengkap dari beberapa pengaturan:
MySQL 8.0 |
---|
|
MySQL5.0 |
---|
|
PostgreSQL |
---|
|
MySQL 8.0 mendukung lebih banyak fitur daripada MySQL 5.0, jadi jika Anda ingin Hibernate memanfaatkan semuanya secara maksimal, tentukan dialek yang benar.
Basis data H2 biasanya disimpan dalam memori, demikian mem:test
juga nama server SQL dan nama skema yang akan Anda gunakan.
GO TO FULL VERSION