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 traceakan 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, log4jdbcatau p6spy. Kedua proxy berfungsi dan memiliki permulaan, meskipun log4jdbctidak 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
hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
hibernate.connection.driver_class=com.mysql.cj.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/test
hibernate.connection.username=root
hibernate.connection.password=secret
hibernate.show_sql=true
hibernate.hbm2ddl=validate
MySQL5.0
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/test
hibernate.connection.username=root
hibernate.connection.password=secret
hibernate.show_sql=true
hibernate.hbm2ddl=validate
PostgreSQL
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class= org.postgresql.Driver
hibernate.connection.url= jdbc:postgresql://localhost/test
hibernate.connection.username=root
hibernate.connection.password=secret
hibernate.show_sql=true
hibernate.hbm2ddl=validate

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:testjuga nama server SQL dan nama skema yang akan Anda gunakan.