5.1 Automatikus adatséma generálás
Amikor először konfigurálja a hibernált állapotot, sok érdekes beállítást engedélyezhet. Előtte nem hoztam őket, hogy ne permetezzem. De a szint végén néhányra gondolok, hogy elmondjam.
Az első ilyen beállítás a hbm2ddl.auto
. 5 különböző értéke lehet:
érvényesít | Érvényesítés: A Hibernate ellenőrzi, hogy az oszlop- és mezőnevek és -típusok egyeznek-e az adatbázisban és a megjegyzésekben. Ez a leggyakoribb mód. |
frissítés | Frissítés: A Hibernate frissíti az adatbázis tábláit, ha azok vagy oszlopaik eltérnek a várttól. |
teremt | Újrakészítés: A Hibernate törli az adatbázisban lévő összes táblát, és újra létrehozza azokat a megjegyzésekből származó adatok alapján. |
létrehozás-ledobás | Létrehozás-törlés. A munka elején a Hibernate létrehozza az összes táblát, a munka végén pedig maga után törli azokat. |
egyik sem | A hibernált állapot egyáltalán nem csinál semmit. Ha valahol az alap nem felel meg az elvárásoknak, akkor a lekérdezések végrehajtása során hibákat dobnak fel. |
5.2 Kérelmek naplózása
A Hibernate második nagyon hasznos beállítása az összes kérés naplózása az adatbázisban: az adatbázishoz intézett összes kérés duplikálva van a konzolon. Ez egy nagyon hasznos funkció, ha módosítja a hibernálással kapcsolatos kódot.
Először is jobban megérti, hogyan konvertálják a lekérdezéseket SQL-be. Másodszor, könnyebb és hamarabb megtalálhatja a hibákat. És biztosan meg is fogják. A hibernált állapot nem mindig a várt módon működik. Ez különösen gyakran kapcsolódik az annotációkhoz: a saját módján érti őket, és a maga módján hibernálja.
A naplózást lehetővé tevő beállítás az ún hibernate.show_sql
. Ha az értékét igazra állítja, akkor az adatbázis lekérdezései a konzolra kerülnek. A paraméter vele együtt is használatos hibernate.format_sql
, ami lehetővé teszi egy kényelmes SQL lekérdezési formátum beállítását a naplóban.
Egy másik módja a kérések naplózásának az adatbázisba a szabványos naplózó használata . Minden adott abban, hogy a Hibernate már írja lekérdezéseit a szabványos naplózóba, de csak a hatókörrel - DEBUG. Két tulajdonságot kell módosítania a szabványos naplózóban:
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
A BasicBinder szintjének módosítása a lekérdezési paramétereket ad trace
hozzánk, azonban kissé szokatlan formában - a lekérdezés utáni szekvenciális felsorolásban.
A harmadik megközelítés egy speciális proxy-illesztőprogram használata az adatbázishoz .
Például, log4jdbc
vagy p6spy
. Mindkét proxy működik, és vannak indítói is, bár log4jdbc
az írás idején sokáig nem volt commit.
<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>
Nem megyek bele a részletekbe, csak szeretném, ha tudná, hogy ez lehetséges.
5.3 SQL dialektusok
És még néhány háttérinformáció.
A Hibernate nagyon sok DBMS-t támogat. Mindegyikük egy szabványos SQL-függvény-készletet valósít meg, és néhányat a sajátjukból. Vagy az SQL különböző verziói. Ezért a DBMS-ekkel való együttműködéshez meg kell adnia a Hibernate-nak, hogy az SQL nyelv melyik dialektusát használja.
Íme a legnépszerűbb dialektusok listája:
PostgreSQL | org.hibernate.dialect.PostgreSQLDialect |
SAP DB | org.hibernate.dialect.SAPDBDialect |
Sybase | org.hibernate.dialect.SybaseDialect |
Informix | org.hibernate.dialect.InformixDialect |
Microsoft SQL Server 2008 | org.hibernate.dialect.SQLServer2008Dialect |
MySQL | org.hibernate.dialect.MySQLDialect |
Oracle (bármilyen verzió) | org.hibernate.dialect.OracleDialect |
Oracle 11g | org.hibernate.dialect.Oracle10gDialect |
Természetesen számtalan ilyen dialektus létezhet. Írhat hozzá saját DBMS-t és saját nyelvjárást.
Miért fontos a helyes nyelvjárás megadása?
Az egyes adatbázisok némileg eltérő adattípusokkal rendelkezhetnek. Ezért annak érdekében, hogy a Hibernate tökéletesen működjön, pontosan úgy, ahogyan elvárja tőle, meg kell adnia neki, hogy az SQL nyelv melyik dialektusát kell használnia.
Íme egy érdekes kép, amely megmutatja, hogy minden a valóságban hogyan függ össze:
5.4 Népszerű beállítások
Életének megkönnyítése érdekében itt található néhány beállítás teljes listája:
MySQL 8.0 |
---|
|
MySQL 5.0 |
---|
|
PostgreSQL |
---|
|
A MySQL 8.0 több funkciót támogat, mint a MySQL 5.0, ezért ha azt szeretné, hogy a Hibernate a legtöbbet hozza ki ezekből, adja meg a megfelelő dialektust.
A H2 adatbázis általában a memóriában van tárolva, így mem:test
az SQL szerver neve és a séma neve is, amellyel dolgozni fog.
GO TO FULL VERSION