5.1 Otomatik veri şeması oluşturma
Hazırda bekletmeyi ilk yapılandırdığınızda, birçok ilginç ayarı etkinleştirebilirsiniz. Püskürtmemek için onları daha önce getirmedim. Ama seviyenin sonunda bazılarını anlatmayı düşünüyorum.
Bu tür ilk ayar hbm2ddl.auto
. 5 farklı değere sahip olabilir:
doğrulamak | Doğrulama: Hazırda bekletme, sütun ve alan adları ile türlerinin veritabanında ve ek açıklamalarda eşleşip eşleşmediğini kontrol eder. Bu en yaygın moddur. |
güncelleme | Güncelleme: Hazırda bekletme, veritabanındaki tabloları veya sütunları beklenenden farklıysa günceller. |
yaratmak | Yeniden Oluştur: Hazırda Beklet, veritabanındaki tüm tabloları siler ve açıklamalardan elde edilen verilere göre yeniden oluşturur. |
oluştur-bırak | Oluşturma-silme. Hibernate işin başında tüm tabloları oluşturacak, işin sonunda kendinden sonra onları silecektir. |
hiçbiri | Hazırda bekletme hiçbir şey yapmaz. Temelin bir yerde beklentiyle eşleşmemesi durumunda, sorguların yürütülmesi sırasında hatalar atılacaktır. |
5.2 Günlüğe kaydetme istekleri
Hibernate'in ikinci çok kullanışlı ayarı, tüm isteklerinin veritabanına kaydedilmesidir: veritabanına yapılan tüm istekler konsolda çoğaltılır. Hazırda bekletme ile ilgili kodda değişiklik yapıyorsanız, bu çok yararlı bir özelliktir.
İlk olarak, sorgularınızın SQL'e nasıl dönüştürüldüğünü daha iyi anlayacaksınız. İkincisi, daha kolay ve daha erken hataları bulabileceksiniz. Ve kesinlikle yapacaklar. Hazırda bekletme her zaman beklediğimiz gibi çalışmaz. Bu, özellikle ek açıklamalarla ilişkilendirilir: onları kendi yönteminizle anlarsınız ve Hazırda Bekletme modunu kendi yönteminizle anlarsınız.
Günlüğe kaydetmeyi sağlayan ayara denir hibernate.show_sql
. Değerini true olarak ayarlarsanız, veritabanına yapılan sorgular konsola yazılır. hibernate.format_sql
Parametre , günlükte uygun bir SQL sorgu formatı ayarlamanıza izin veren onunla birlikte de kullanılır .
İstekleri veritabanına kaydetmenin başka bir yolu da standart günlükçü kullanmaktır . Her şey, Hazırda Beklet'in sorgularını zaten standart günlükçüye yazdığı gerçeğinde, ancak yalnızca kapsamla - DEBUG. Standart kaydedicinizdeki iki özelliği değiştirmeniz gerekir:
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
BasicBinder düzeyinin olarak değiştirilmesi trace
, bize biraz alışılmadık bir biçimde sorgu parametreleri ekleyecektir - sorgunun kendisinden sonra sıralı numaralandırma.
Üçüncü yaklaşım, veritabanı için özel bir proxy sürücüsü kullanmaktır .
Örneğin log4jdbc
veya p6spy
. Her iki proxy de çalışıyor ve başlatıcıları var, ancak bu log4jdbc
yazının yazıldığı sırada uzun süredir herhangi bir taahhüt yoktu.
<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>
Ayrıntılara girmeyeceğim, sadece bunun mümkün olduğunu bilmenizi istiyorum.
5.3 SQL lehçeleri
Ve biraz daha arka plan bilgisi.
Hazırda Bekletme, çok sayıda DBMS'yi destekler. Her biri standart bir SQL işlevleri kümesini ve biraz daha fazlasını uygular. Veya SQL'in farklı sürümleri. Bu nedenle, bu DBMS ile çalışmak için Hibernate'e SQL dilinin hangi lehçesini kullanacağınızı söylemeniz gerekir.
İşte en popüler lehçelerin bir listesi:
postgresql | org.hibernate.dialect.PostgreSQLDialect |
SAP veritabanı | org.hibernate.dialect.SAPDBDialect |
Sybase | org.hibernate.dialect.SybaseDialect |
Informix | org.hibernate.dialect.InformixDialect |
Microsoft SQL Sunucusu 2008 | org.hibernate.dialect.SQLServer2008Dialect |
MySQL | org.hibernate.dialect.MySQLDialect |
Oracle (herhangi bir sürüm) | org.hibernate.dialect.OracleDialect |
Oracle 11g | org.hibernate.dialect.Oracle10gDialect |
Tabii ki, bu tür herhangi bir sayıda lehçe olabilir. Bunun için kendi DBMS'nizi ve kendi lehçenizi yazabilirsiniz.
Doğru lehçeyi belirtmek neden önemlidir?
Her veritabanı biraz farklı veri türlerine sahip olabilir. Bu nedenle, Hibernate'in tam olarak beklediğiniz gibi mükemmel bir şekilde çalışması için, ona SQL dilinin hangi lehçesini kullanması gerektiğini söylemeniz gerekir.
İşte her şeyin gerçekte nasıl bağlantılı olduğunu gösteren ilginç bir resim:
5.4 Popüler ayarlar
Hayatınızı kolaylaştırmak için çeşitli ayarların tam listesi aşağıda verilmiştir:
MySQL 8.0 |
---|
|
MySQL 5.0 |
---|
|
postgresql |
---|
|
MySQL 8.0, MySQL 5.0'dan daha fazla özelliği destekler, bu nedenle Hibernate'in tüm bunlardan en iyi şekilde yararlanmasını istiyorsanız, doğru lehçeyi belirtin.
H2 veritabanı genellikle bellekte depolanır, dolayısıyla mem:test
hem SQL sunucusunun adı hem de birlikte çalışacağınız şemanın adıdır.
GO TO FULL VERSION