5.1 ఆటోమేటిక్ డేటా స్కీమా జనరేషన్

మీరు మొదట హైబర్నేట్‌ను కాన్ఫిగర్ చేసినప్పుడు, మీరు చాలా ఆసక్తికరమైన సెట్టింగ్‌లను ప్రారంభించవచ్చు. పిచికారీ చేయకుండా నేను వాటిని ఇంతకు ముందు తీసుకురాలేదు. కానీ స్థాయి ముగింపులో నేను చెప్పడానికి వాటిలో కొన్ని గురించి ఆలోచిస్తాను.

అటువంటి మొదటి సెట్టింగ్ hbm2ddl.auto. ఇది 5 విభిన్న విలువలను కలిగి ఉంటుంది:

చెల్లుబాటు చేయండి ధ్రువీకరణ: డేటాబేస్ మరియు ఉల్లేఖనాలలో కాలమ్ మరియు ఫీల్డ్ పేర్లు మరియు రకాలు సరిపోలుతున్నాయో లేదో హైబర్నేట్ తనిఖీ చేస్తుంది. ఇది అత్యంత సాధారణ మోడ్.
నవీకరణ అప్‌డేట్: డేటాబేస్‌లోని పట్టికలు లేదా వాటి నిలువు వరుసలు ఊహించిన దానికంటే భిన్నంగా ఉంటే హైబర్నేట్ వాటిని అప్‌డేట్ చేస్తుంది.
సృష్టించు పునఃసృష్టి: హైబర్నేట్ డేటాబేస్లోని అన్ని పట్టికలను తొలగిస్తుంది మరియు ఉల్లేఖనాల నుండి డేటా ఆధారంగా వాటిని మళ్లీ సృష్టిస్తుంది.
సృష్టించు- డ్రాప్ సృష్టి-తొలగింపు. పని ప్రారంభంలో, హైబర్నేట్ అన్ని పట్టికలను సృష్టిస్తుంది, పని చివరిలో, అది వాటిని స్వయంగా తొలగిస్తుంది.
ఏదీ లేదు హైబర్నేట్ అస్సలు ఏమీ చేయదు. ఎక్కడా బేస్ అంచనాతో సరిపోలకపోతే, ప్రశ్నల అమలు సమయంలో లోపాలు విసిరివేయబడతాయి.

5.2 లాగింగ్ అభ్యర్థనలు

హైబర్నేట్ యొక్క రెండవ చాలా ఉపయోగకరమైన సెట్టింగ్ దాని అన్ని అభ్యర్థనలను డేటాబేస్కు లాగింగ్ చేయడం: డేటాబేస్కు సంబంధించిన అన్ని అభ్యర్థనలు కన్సోల్‌లో నకిలీ చేయబడతాయి. మీరు హైబర్నేట్ సంబంధిత కోడ్‌కి మార్పులు చేస్తుంటే ఇది చాలా ఉపయోగకరమైన ఫీచర్.

ముందుగా, మీ ప్రశ్నలు SQLకి ఎలా మార్చబడతాయో మీరు బాగా అర్థం చేసుకుంటారు. రెండవది, ఇది సులభం మరియు ముందుగా మీరు లోపాలను కనుగొనగలరు. మరియు వారు ఖచ్చితంగా చేస్తారు. హైబర్నేట్ ఎల్లప్పుడూ మనం ఆశించిన విధంగా పని చేయదు. ఇది చాలా తరచుగా ఉల్లేఖనాలతో ముడిపడి ఉంటుంది: మీరు వాటిని మీ స్వంత మార్గంలో అర్థం చేసుకుంటారు మరియు మీ స్వంత మార్గంలో నిద్రాణస్థితిలో ఉండండి.

లాగింగ్‌ని ఎనేబుల్ చేసే సెట్టింగ్‌ని అంటారు hibernate.show_sql. మీరు దాని విలువను ఒప్పుకు సెట్ చేస్తే, డేటాబేస్కు సంబంధించిన ప్రశ్నలు కన్సోల్‌కు వ్రాయబడతాయి. పరామితి దానితో కలిపి కూడా ఉపయోగించబడుతుంది hibernate.format_sql, ఇది లాగ్‌లో అనుకూలమైన SQL ప్రశ్న ఆకృతిని సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.

డేటాబేస్‌కు అభ్యర్థనలను లాగ్ చేయడానికి మరొక మార్గం ప్రామాణిక లాగర్‌ను ఉపయోగించడం . హైబర్నేట్ ఇప్పటికే దాని ప్రశ్నలను ప్రామాణిక లాగర్‌కు వ్రాస్తుంది, కానీ స్కోప్‌తో మాత్రమే - డీబగ్‌తో మాత్రమే ప్రతిదీ ఇచ్చింది. మీరు మీ ప్రామాణిక లాగర్‌లో రెండు లక్షణాలను మార్చాలి:

logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace

BasicBinder స్థాయిని మార్చడం వలన మాకు traceక్వెరీ పారామితులను జోడిస్తుంది, అయితే, కొంచెం అసాధారణ రూపంలో - ప్రశ్న తర్వాతే సీక్వెన్షియల్ ఎన్యూమరేషన్.

మూడవ విధానం డేటాబేస్ కోసం ప్రత్యేక ప్రాక్సీ డ్రైవర్‌ను ఉపయోగించడం .

ఉదాహరణకు, log4jdbcలేదా p6spy. రెండు ప్రాక్సీలు పని చేస్తున్నాయి మరియు స్టార్టర్‌లను కలిగి ఉన్నాయి, అయితే log4jdbcవ్రాసే సమయంలో చాలా కాలం వరకు ఎటువంటి కమిట్‌లు లేవు.


<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>

నేను వివరాల్లోకి వెళ్లను, ఇది సాధ్యమేనని మీరు తెలుసుకోవాలని నేను కోరుకుంటున్నాను.

5.3 SQL మాండలికాలు

మరియు మరికొన్ని నేపథ్య సమాచారం.

హైబర్నేట్ చాలా పెద్ద సంఖ్యలో DBMSలకు మద్దతు ఇస్తుంది. వాటిలో ప్రతి ఒక్కటి ప్రామాణికమైన SQL ఫంక్షన్‌ల సెట్‌ను అమలు చేస్తుంది మరియు కొన్ని వాటి స్వంతవి. లేదా SQL యొక్క విభిన్న సంస్కరణలు. కాబట్టి, ఈ DBMSతో పని చేయడానికి, SQL భాష యొక్క ఏ మాండలికాన్ని ఉపయోగించాలో మీరు హైబర్నేట్‌కి చెప్పాలి.

అత్యంత ప్రజాదరణ పొందిన మాండలికాల జాబితా ఇక్కడ ఉంది:

PostgreSQL org.hibernate.dialect.PostgreSQLDialect
SAP DB org.hibernate.dialect.SAPDBDialect
సైబేస్ org.hibernate.dialect.SybaseDialect
ఇన్ఫార్మిక్స్ org.hibernate.dialect.InformixDialect
మైక్రోసాఫ్ట్ SQL సర్వర్ 2008 org.hibernate.dialect.SQLServer2008Dialect
MySQL org.hibernate.dialect.MySQLDialect
ఒరాకిల్ (ఏదైనా వెర్షన్) org.hibernate.dialect.OracleDialect
ఒరాకిల్ 11 గ్రా org.hibernate.dialect.Oracle10gDialect

వాస్తవానికి, అటువంటి మాండలికాలు ఎన్ని అయినా ఉండవచ్చు. మీరు దాని కోసం మీ స్వంత DBMS మరియు మీ స్వంత మాండలికాన్ని వ్రాయవచ్చు.

సరైన మాండలికాన్ని పేర్కొనడం ఎందుకు ముఖ్యం?

ప్రతి డేటాబేస్ కొద్దిగా భిన్నమైన డేటా రకాలను కలిగి ఉండవచ్చు. అందువల్ల, హైబర్నేట్ మీరు ఆశించిన విధంగా ఖచ్చితంగా పని చేయడానికి, SQL భాష యొక్క ఏ మాండలికం ఉపయోగించాలో మీరు చెప్పాలి.

వాస్తవానికి ప్రతిదీ ఎలా కనెక్ట్ చేయబడిందో చూపించే ఆసక్తికరమైన చిత్రం ఇక్కడ ఉంది:

5.4 జనాదరణ పొందిన సెట్టింగ్‌లు

మీ జీవితాన్ని సులభతరం చేయడానికి, ఇక్కడ అనేక సెట్టింగ్‌ల పూర్తి జాబితా ఉంది:

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
MySQL 5.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 MySQL 5.0 కంటే ఎక్కువ ఫీచర్లకు మద్దతు ఇస్తుంది, కాబట్టి మీరు హైబర్నేట్ వాటిని ఎక్కువగా ఉపయోగించాలనుకుంటే, సరైన మాండలికాన్ని పేర్కొనండి.

H2 డేటాబేస్ సాధారణంగా మెమరీలో నిల్వ చేయబడుతుంది, కాబట్టి mem:testSQL సర్వర్ పేరు మరియు మీరు పని చేసే స్కీమా పేరు రెండూ ఉంటాయి.