5.1 தானியங்கி தரவு திட்ட உருவாக்கம்

நீங்கள் முதலில் ஹைபர்னேட்டை உள்ளமைக்கும்போது, ​​​​நீங்கள் நிறைய சுவாரஸ்யமான அமைப்புகளை இயக்கலாம். தெளிக்காதபடி நான் அவற்றை முன்பு கொண்டு வரவில்லை. ஆனால் மட்டத்தின் முடிவில் அவர்களில் சிலரைப் பற்றி நான் சொல்ல நினைக்கிறேன்.

அத்தகைய முதல் அமைப்பு hbm2ddl.auto. இது 5 வெவ்வேறு மதிப்புகளைக் கொண்டிருக்கலாம்:

சரிபார்க்க சரிபார்ப்பு: தரவுத்தளத்திலும் சிறுகுறிப்புகளிலும் நெடுவரிசை மற்றும் புலத்தின் பெயர்கள் மற்றும் வகைகள் பொருந்துமா என்பதை Hibernate சரிபார்க்கும். இது மிகவும் பொதுவான பயன்முறையாகும்.
மேம்படுத்தல் புதுப்பி: தரவுத்தளத்தில் உள்ள அட்டவணைகள் அல்லது அவற்றின் நெடுவரிசைகள் எதிர்பார்த்ததை விட வித்தியாசமாக இருந்தால், ஹைபர்னேட் அவற்றைப் புதுப்பிக்கும்.
உருவாக்க மறுஉருவாக்கம்: ஹைபர்னேட் தரவுத்தளத்தில் உள்ள அனைத்து அட்டவணைகளையும் நீக்கி, சிறுகுறிப்புகளின் தரவின் அடிப்படையில் அவற்றை மீண்டும் உருவாக்கும்.
உருவாக்க-துளி படைத்தல்-அழித்தல். வேலையின் தொடக்கத்தில், ஹைபர்னேட் அனைத்து அட்டவணைகளையும் உருவாக்கும், வேலையின் முடிவில், அது தானாகவே அவற்றை நீக்கும்.
எதுவும் இல்லை ஹைபர்னேட் எதுவும் செய்யாது. எங்காவது அடிப்படை எதிர்பார்ப்புடன் பொருந்தவில்லை என்றால், வினவல்களை செயல்படுத்தும் போது பிழைகள் வீசப்படும்.

5.2 பதிவு கோரிக்கைகள்

ஹைபர்னேட்டின் இரண்டாவது மிகவும் பயனுள்ள அமைப்பு அதன் அனைத்து கோரிக்கைகளையும் தரவுத்தளத்தில் பதிவு செய்வதாகும்: தரவுத்தளத்திற்கான அனைத்து கோரிக்கைகளும் கன்சோலில் நகலெடுக்கப்படுகின்றன. ஹைபர்னேட் தொடர்பான குறியீட்டில் நீங்கள் மாற்றங்களைச் செய்தால் இது மிகவும் பயனுள்ள அம்சமாகும்.

முதலில், உங்கள் வினவல்கள் எப்படி SQL ஆக மாற்றப்படுகின்றன என்பதை நீங்கள் நன்கு புரிந்துகொள்வீர்கள். இரண்டாவதாக, இது எளிதானது மற்றும் முன்னதாக நீங்கள் பிழைகளைக் கண்டறிய முடியும். மேலும் அவர்கள் நிச்சயமாக செய்வார்கள். Hibernate எப்போதும் நாம் எதிர்பார்க்கும் விதத்தில் செயல்படாது. இது குறிப்பாக அடிக்கடி சிறுகுறிப்புகளுடன் தொடர்புடையது: நீங்கள் அவற்றை உங்கள் சொந்த வழியில் புரிந்துகொள்கிறீர்கள், மேலும் உங்கள் சொந்த வழியில் உறக்கநிலையில் இருங்கள்.

பதிவு செய்வதை செயல்படுத்தும் அமைப்பு அழைக்கப்படுகிறது hibernate.show_sql. நீங்கள் அதன் மதிப்பை உண்மை என அமைத்தால், தரவுத்தளத்திற்கான வினவல்கள் கன்சோலில் எழுதப்படும். இந்த அளவுரு அதனுடன் இணைந்து பயன்படுத்தப்படுகிறது hibernate.format_sql, இது பதிவில் வசதியான SQL வினவல் வடிவமைப்பை அமைக்க உங்களை அனுமதிக்கிறது.

தரவுத்தளத்தில் கோரிக்கைகளை பதிவு செய்வதற்கான மற்றொரு வழி நிலையான லாகரைப் பயன்படுத்துவதாகும் . ஹைபர்னேட் ஏற்கனவே அதன் வினவல்களை நிலையான லாகருக்கு எழுதுகிறது, ஆனால் நோக்கம் - DEBUG உடன் மட்டுமே. உங்கள் நிலையான லாகரில் இரண்டு பண்புகளை மாற்ற வேண்டும்:

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 மொழியின் எந்தப் பேச்சுவழக்கைப் பயன்படுத்த வேண்டும் என்பதை நீங்கள் Hibernate க்கு சொல்ல வேண்டும்.

மிகவும் பிரபலமான பேச்சுவழக்குகளின் பட்டியல் இங்கே:

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 5.0 ஐ விட MySQL 8.0 கூடுதல் அம்சங்களை ஆதரிக்கிறது, எனவே ஹைபர்னேட் அவற்றைப் பயன்படுத்த விரும்பினால், சரியான பேச்சுவழக்கைக் குறிப்பிடவும்.

H2 தரவுத்தளம் பொதுவாக நினைவகத்தில் சேமிக்கப்படுகிறது, எனவே mem:testSQL சேவையகத்தின் பெயர் மற்றும் நீங்கள் பணிபுரியும் திட்டத்தின் பெயர்.