5.1 Awtomatikong pagbuo ng schema ng data
Kapag una mong na-configure ang Hibernate, maaari mong paganahin ang maraming kawili-wiling mga setting. Hindi ko sila dinala noon, para hindi mag-spray. Ngunit sa dulo ng antas ay iniisip ko ang ilan sa kanila na sasabihin.
Ang unang ganoong setting ay ang hbm2ddl.auto
. Maaari itong magkaroon ng 5 magkakaibang mga halaga:
patunayan | Pagpapatunay: Susuriin ng hibernate kung tumutugma ang mga pangalan at uri ng column at field sa database at sa mga anotasyon. Ito ang pinakakaraniwang mode. |
update | Update: I-a-update ng hibernate ang mga talahanayan sa database kung iba sila o ang kanilang mga column kaysa sa inaasahan. |
lumikha | Muling likhain: Tatanggalin ng hibernate ang lahat ng mga talahanayan sa database at muling likhain ang mga ito batay sa data mula sa mga anotasyon. |
lumikha-drop | Paglikha-pagtanggal. Sa simula ng trabaho, gagawin ng Hibernate ang lahat ng mga talahanayan, sa pagtatapos ng trabaho, tatanggalin nito ang mga ito pagkatapos mismo. |
wala | Walang gagawin ang hibernate. Kung sa isang lugar ang base ay hindi tumutugma sa inaasahan, ang mga error ay itatapon sa panahon ng pagpapatupad ng mga query. |
5.2 Pag-log ng mga kahilingan
Ang pangalawang napaka-kapaki-pakinabang na setting ng Hibernate ay ang pag-log ng lahat ng mga kahilingan nito sa database: lahat ng mga kahilingan sa database ay nadoble sa console. Ito ay isang napaka-kapaki-pakinabang na tampok kung ikaw ay gumagawa ng mga pagbabago sa Hibernate related code.
Una, mas mauunawaan mo kung paano na-convert ang iyong mga query sa SQL. Pangalawa, mas madali at mas maaga ay makakahanap ka ng mga error. At tiyak na gagawin nila. Ang hibernate ay hindi palaging gumagana sa paraang inaasahan namin. Madalas itong nauugnay sa mga anotasyon: naiintindihan mo ang mga ito sa iyong sariling paraan, at Hibernate sa sarili mong paraan.
Ang setting na nagbibigay-daan sa pag-log ay tinatawag na hibernate.show_sql
. Kung itatakda mo ang halaga nito sa true, ang mga query sa database ay isusulat sa console. Ginagamit din ang parameter kasabay nito hibernate.format_sql
, na nagbibigay-daan sa iyong magtakda ng maginhawang format ng query sa SQL sa log.
Ang isa pang paraan upang mag - log ng mga kahilingan sa database ay ang paggamit ng karaniwang logger . Ang lahat ay nagbigay sa katotohanan na ang Hibernate ay nagsusulat na ng mga query nito sa karaniwang logger, ngunit sa saklaw lamang - DEBUG. Kailangan mong baguhin ang dalawang katangian sa iyong karaniwang logger:
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
Ang pagbabago sa antas ng BasicBinder sa trace
ay magdaragdag ng mga parameter ng query sa amin, gayunpaman, sa isang bahagyang hindi pangkaraniwang anyo - sequential enumeration pagkatapos ng query mismo.
Ang ikatlong diskarte ay ang paggamit ng isang espesyal na proxy driver para sa database .
Halimbawa, log4jdbc
o p6spy
. Ang parehong mga proxy ay gumagana at may mga nagsisimula, kahit na log4jdbc
walang mga commit sa loob ng mahabang panahon sa oras ng pagsulat.
<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>
Hindi ko na idedetalye, gusto ko lang malaman mo na posible ito.
5.3 Mga diyalektong SQL
At ilang higit pang impormasyon sa background.
Sinusuportahan ng hibernate ang napakalaking bilang ng mga DBMS. Ang bawat isa sa kanila ay nagpapatupad ng isang karaniwang hanay ng mga SQL function at ilan pa sa kanilang sarili. O iba't ibang bersyon ng SQL. Samakatuwid, upang gumana sa mga DBMS na ito, kailangan mong sabihin sa Hibernate kung aling diyalekto ng wikang SQL ang gagamitin.
Narito ang isang listahan ng mga pinakasikat na diyalekto:
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 (anumang bersyon) | org.hibernate.dialect.OracleDialect |
Oracle 11g | org.hibernate.dialect.Oracle10gDialect |
Siyempre, maaaring mayroong anumang bilang ng gayong mga diyalekto. Maaari mong isulat ang iyong sariling DBMS at ang iyong sariling diyalekto para dito.
Bakit mahalagang tukuyin ang tamang diyalekto?
Ang bawat database ay maaaring may bahagyang magkakaibang uri ng data. Samakatuwid, upang ang Hibernate ay gumana nang eksakto sa paraang inaasahan mo mula rito, kailangan mong sabihin dito kung aling diyalekto ng wikang SQL ang kailangan nitong gamitin.
Narito ang isang kawili-wiling larawan na nagpapakita kung paano konektado ang lahat sa katotohanan:
5.4 Mga sikat na setting
Upang gawing mas madali ang iyong buhay, narito ang isang kumpletong listahan ng ilang mga setting:
MySQL 8.0 |
---|
|
MySQL 5.0 |
---|
|
PostgreSQL |
---|
|
Sinusuportahan ng MySQL 8.0 ang higit pang mga feature kaysa sa MySQL 5.0, kaya kung gusto mong sulitin ng Hibernate ang mga ito, pagkatapos ay tukuyin ang tamang dialect.
Ang database ng H2 ay karaniwang naka-imbak sa memorya, gayundin mem:test
ang parehong pangalan ng SQL server at ang pangalan ng schema na iyong gagawin.
GO TO FULL VERSION