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 च्या भिन्न आवृत्त्या. म्हणून, या DBMS सह कार्य करण्यासाठी, तुम्हाला SQL भाषेची कोणती बोली वापरायची हे हायबरनेटला सांगावे लागेल.

येथे सर्वात लोकप्रिय बोलींची यादी आहे:

PostgreSQL org.hibernate.dialect.PostgreSQLDdialect
SAP DB org.hibernate.dialect.SAPDBDialect
सायबेस org.hibernate.dialect.SybaseDialect
इन्फॉर्मिक्स org.hibernate.dialect.InformixDialect
मायक्रोसॉफ्ट एसक्यूएल सर्व्हर 2008 org.hibernate.dialect.SQLServer2008Dialect
MySQL org.hibernate.dialect.MySQLDdialect
ओरॅकल (कोणतीही आवृत्ती) 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 सर्व्हरचे नाव आणि तुम्ही ज्या स्कीमासह कार्य करणार आहात त्याचे नाव दोन्ही आहे.