1.1 மேப்பிங் வகுப்புகள் அட்டவணைகள்

ஜேடிபிசியைப் படித்த பிறகு, ஜாவா பயன்பாட்டிலிருந்து தரவுத்தளத்துடன் பணிபுரிவது இன்னும் மகிழ்ச்சியாக இருக்கிறது என்ற எண்ணம் உங்களுக்கு இருக்கலாம். இந்த வேலைகளை எல்லாம் 10 மடங்கு எளிதாக செய்ய முடியும் என்று சொன்னால் என்ன செய்வது?

SQL மொழியின் முக்கிய நன்மை என்ன? இது ஒரு அறிவிப்பு மொழி - நாம் எதைப் பெற விரும்புகிறோம் என்பதை இது விவரிக்கிறது, அதை எப்படி செய்வது என்பது பற்றி எதுவும் கூறவில்லை. எப்படி - இது SQL சேவையகத்தின் கவலை.

தரவுத்தளங்களுடன் பணிபுரியும் போது அதே அணுகுமுறையைப் பயன்படுத்தலாம்.

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

நான் என்ன சொல்ல முடியும், 2000 ஆம் ஆண்டில் பல தோழர்கள் இதைத்தான் நினைத்து தங்கள் சொந்த ORM கட்டமைப்பை எழுத முடிவு செய்தனர்.

ORM என்பது ஆப்ஜெக்ட்-ரிலேஷனல் மேப்பிங்கைக் குறிக்கிறது மற்றும் இது SQL வினவல்களுக்கு ஜாவா பொருள்களின் மேப்பிங் ஆகும்.

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

இந்த சிக்கலைத் தீர்ப்பதற்கு மூன்று அணுகுமுறைகள் இருந்தன, அவை இப்படித்தான் இருந்தன:

  1. பொருள் தன்னை தரவுத்தளத்தில் சேமித்து, தரவுத்தளத்தில் உள்ள தகவலின் அடிப்படையில் அதன் புலங்களை புதுப்பிக்கிறது.
  2. பொருள் தன்னை தரவுத்தளத்தில் சேமிக்க முடியும், ஆனால் இந்த வழக்கை ஒருபோதும் தொடங்குவதில்லை.
  3. பொருளில் தரவு மட்டுமே உள்ளது, யாரோ ஒருவர் அதை தரவுத்தளத்தில் சேமித்து தரவுத்தளத்திலிருந்து ஏற்றுகிறார்.

ஆரம்பத்தில், முதல் அணுகுமுறை ஆதிக்கம் செலுத்தியது, பின்னர் பயன்பாட்டு சேவையகங்கள் மற்றும் எண்டர்பிரைஸ் ஜாவா பீன்ஸ் ஆகியவை பிரபலமாக இருந்தன. தரவுத்தளத்தில் தங்களைத் தாங்களே காப்பாற்றிக் கொள்ளக்கூடிய பெர்சிஸ்டென்ஸ் EJBs எனப்படும் பீன்ஸ் வகை முழுவதுமாக இருந்தது.

ஆனால் ஒரு நாள் எல்லாம் மாறியது...

1.2 உறக்கநிலையின் வெளிப்பாடு

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

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

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

ORM அணுகுமுறை உண்மையில் அந்த கருத்தை உடைக்கிறது. தரவு வகுப்பு அதன் உள் கட்டமைப்பை வெளிப்படுத்துகிறது, ஆனால் பல்வேறு வகையான பொருட்களின் குழுக்களுடன் செயல்படுவது மிகவும் எளிதாகிவிட்டது.

ஜாவா 5 வெளியான பிறகு , ஜேடிகேயில் இரண்டு விஷயங்கள் தோன்றியபோது ஒரு பெரிய திருப்புமுனை ஏற்பட்டது:

  • சிறுகுறிப்புகள்
  • பதிலாள்

சிறுகுறிப்புகள்XML விரைவாக மாற்றப்பட்டது, இப்போது ஜாவா வகுப்பில் உள்ள தரவுத்தளத்தில் உள்ள அட்டவணையில் ஜாவா வகுப்பை மேப்பிங் செய்வதற்குத் தேவையான அனைத்து அமைப்புகளையும் குறிப்பிடுவது எளிது.

பதிலாள்Hibernate பயனருக்கு அவ்வளவு கவனிக்கப்படவில்லை, ஆனால் அவர்களின் பங்களிப்பு இன்னும் தீவிரமானது. நீங்கள் Hibernate இலிருந்து ஒரு குறிப்பிட்ட பொருள் அல்லது பொருட்களைக் கோரும்போது, ​​அது உங்களுக்கு ஒரு ஸ்டப்பை (ப்ராக்ஸி) திருப்பித் தருகிறது, மேலும் அதன் முறைகளுக்கான அனைத்து அழைப்புகளையும் இடைமறிக்கும்.

இது பல்வேறு சோம்பேறி ஏற்றுதல் பொறிமுறைகளை செயல்படுத்துவதை சாத்தியமாக்கியது மற்றும் அந்த நேரத்தில் ஹைபர்னேட்டின் வேகத்தையும் செயல்திறனையும் முற்றிலும் வானத்தில் உயர்ந்த நிலைக்கு உயர்த்தியது. ஹைபர்னேட் ஒரு நடைமுறைத் தொழில் தரநிலையாக மாறவில்லை - இது மற்ற மொழிகளில் மொழிபெயர்க்கத் தொடங்கியுள்ளது. எனவே, எடுத்துக்காட்டாக, C#க்கு Framework NHibernate தோன்றியது.

1.3 ஜேபிஏவின் தோற்றம்

நடைமுறைக்கு பிறகு டி ஜூர் அங்கீகாரம். JDK டெவலப்பர்கள் ஒரு தரவுத்தளத்தில் உள்ள அட்டவணைகளுக்கு பொருட்களை எவ்வாறு சரியாக வரைபடமாக்குவது என்பது குறித்த விவரக்குறிப்பை உருவாக்க முடிவு செய்தனர். இந்த விவரக்குறிப்பு அழைக்கப்படுகிறதுஜேபிஏ- ஜாவா பெர்சிஸ்டன்ஸ் ஏபிஐ.

இது சரியாக விவரக்குறிப்பு. எல்லாமே எவ்வாறு செயல்பட வேண்டும் மற்றும் அதன் பொருள்கள் தரவுத்தளத்தில் சேமிக்கப்பட வேண்டுமெனில், வகுப்பின் வெவ்வேறு பகுதிகளைக் குறிக்க என்ன சிறுகுறிப்புகள் தேவை என்பதை இது விவரிக்கிறது.

தோழர்களே ஹைபர்னேட்டை ஒரு அடிப்படையாக எடுத்துக்கொண்டு அதிலிருந்து தொகுப்பு பெயர்களை மாற்றியதாக தெரிகிறது. ஏனெனில் ஹைபர்னேட்டில் இருந்த அனைத்து சிறுகுறிப்புகளும் கிட்டத்தட்ட ஒவ்வொன்றாக JPA க்கு நகர்ந்தன.

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

  • JPA தரநிலை
  • ஹைபர்னேட் நேட்டிவ் ஏபிஐ (கூடுதல் செயல்பாடு)

உத்தியோகபூர்வ Hibernate ஆவணம் இதை இவ்வாறு விவரிக்கிறது:

ஆனால் எனது அனுபவத்தின் அடிப்படையில் மற்றும் Hibernate ஆவணங்களை மீண்டும் படித்த பிறகு, JPA மற்றும் Hibernate API ஆகியவை 95% ஒரே மாதிரியானவை என்று என்னால் கூற முடியும். அவை ஒரே மாதிரியான கருத்துக்கள் மட்டுமே.

1.4 உறக்கநிலைக்கான மேவன்

நான் ஹைபர்னேட்டை மிகவும் பாராட்டியதால், அதனுடன் கொஞ்சம் கடினமாக வேலை செய்ய வேண்டிய நேரம் இது என்று நினைக்கிறேன்.

முதலாவதாக, ஒரு அதிகாரப்பூர்வ தளம் உள்ளது, அங்கு ஒரு சில ஆங்கில மொழி ஆவணங்கள் உள்ளன. அவள், நிச்சயமாக, குறிப்பு தகவல்களில் ஒரு சார்பு கொண்டவள், பயிற்சியில் அல்ல. ஆனால் ஆதாரங்களை பிழைத்திருத்துவதை விட இது இன்னும் சிறந்தது, இல்லையா? :)

அறிவுறுத்தல்:

  1. நீங்கள் இணைப்பைத் திறக்கவும் .
  2. நீங்கள் அவளை நீண்ட நேரம் பார்க்கிறீர்கள்.
  3. CodeGym க்கு மீண்டும் வருகிறேன்.
  4. எனது மேலதிக விரிவுரைகளை நீங்கள் படித்தீர்கள்.

சிக்கலான விஷயங்களை எளிமைப்படுத்துவதும், எளிமையான சொற்களில் விளக்குவதும் எனது வேலை. நீங்கள் இந்த நிலையை அடைந்திருந்தால், என்னால் அதை செய்ய முடியும்.

சரி, Hibernate உடன் தொடங்க, அதை உங்கள் pom.xml இல் சேர்க்க வேண்டும். இன்றுவரை, Hibernate இன் 6 வது பதிப்பு ஏற்கனவே உள்ளது, அல்லது 6.1.1, எனவே சமீபத்திய பதிப்பில் எவ்வாறு வேலை செய்வது என்பதை நாங்கள் கற்றுக்கொள்வோம்.

உங்கள் pom.xml இல் இந்த வரிகளைச் சேர்க்கவும்:


<dependency>
	<groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
	<version>6.1.1.Final</version>
</dependency>

2023+ இன் சாளரத்திற்கு வெளியே இந்த விரிவுரையை நீங்கள் படிக்கிறீர்கள் என்றால், புதிய பதிப்பை இங்கே பதிவிறக்கம் செய்யலாம் .

முக்கியமான! ஹைபர்னேட் பயன்படுத்தும் சில நூலகங்கள் JDK 11 மற்றும் JDK 17 இல் நிறுத்தப்பட்டுள்ளன, எனவே உங்கள் திட்டத்தை செயல்படுத்துவதில் சிக்கல் இருந்தால், இந்த சார்புகளை அதில் சேர்க்கவும்:


  	<dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
      	<version>4.0.0</version>
  	</dependency>
 
  	<dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
      	<version>4.0.0</version>
  	</dependency>
 
  	<dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.29.0-GA</version>
  	</dependency>