3.1 ஹைபர்னேட் மற்றும் டேட்டாபேஸ்களை இணைத்தல்

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

இவ்வளவு வேகமாக இல்லை. முதலில், நீங்கள் இன்னும் மூன்று விஷயங்களைக் கையாள வேண்டும்:

  • தரவுத்தள இணைப்பை உள்ளமைத்தல்
  • ஹைபர்னேட்டை அமைக்கிறது
  • EntityManager உடன் பணிபுரிதல்

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

ஹைபர்னேட்டை கட்டமைத்து மூன்று வழிகளில் தரவுத்தள தகவலை கொடுக்கலாம்

  • பண்புகள் கோப்பைப் பயன்படுத்தவும்
  • hibernate.cfg.xml கோப்பைப் பயன்படுத்தவும்
  • உள்ளமைவு பீன் முறைகளைப் பயன்படுத்தவும்

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

3.2 தரவுத்தளத்தில் அங்கீகாரம்

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

பண்புகள் கோப்பு கட்டமைப்பு
hibernate.பண்புகள்
hibernate.dialect= org.hibernate.dialect.Oracle9Dialect
hibernate.connection.driver_class= oracle.jdbc.driver.OracleDriver 
hibernate.connection.url= jdbc:oracle:thin:@localhost:1521:supershop
hibernate.connection.username=root
hibernate.connection.password=secret
hibernate.show_sql=true
hibernate.hbm2ddl=update

அதே அமைப்புகளை xml கோப்பின் வடிவத்தில் அமைக்கலாம்:

எக்ஸ்எம்எல் அடிப்படையிலான கட்டமைப்பு
hibernate.cfg.xml

<hibernate-configuration>	
	<session-factory>	
        	
    	<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>  	
    	<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 	
    	<property name="connection.url">jdbc:oracle:thin:@localhost:1521:supershop</property>  	
    	<property name="connection.username">root</property>  	
    	<property name="connection.password">secret</property>
    	<property name="hibernate.show_sql ">true</property>        
    	<property name="hbm2ddl.auto">update</property> 	
     	
	</session-factory>	
</hibernate-configuration> 

இரண்டு எடுத்துக்காட்டுகளிலும், ஒரே மதிப்புகளுடன் ஒரே அமைப்புகளைப் பார்க்கிறோம். முதல் உதாரணம் அவற்றை பண்புகள் கோப்பாகவும் , இரண்டாவது ஒரு xml கோப்பாகவும் பிரதிபலிக்கிறது .

இந்த அமைப்புகள் மூன்று குழுக்களாக பிரிக்கப்பட்டுள்ளன:

  1. DBMS வகையைக் குறிப்பிடவும்
    • பேச்சுவழக்கை (DBMS வகை) குறிப்பிடவும், எடுத்துக்காட்டாக, ஆரக்கிள் 9.0
    • இந்த DBMS உடன் பணிபுரிய JDBC இயக்கியின் பெயரைக் குறிப்பிடவும்
  2. தரவுத்தளத்தில் அங்கீகாரத்திற்கான தரவைக் குறிப்பிடவும்
    • தரவுத்தள url
    • பயனர் பெயர்
    • கடவுச்சொல்
  3. ஹைபர்னேட் என்ஜினை கட்டமைக்கிறது
    • hibernate.show_sql- Hibernate அது செயல்படுத்தும் அனைத்து கோரிக்கைகளையும் கன்சோலில் நகலெடுக்கும்
    • hbm2ddl.auto- ஹைபர்னேட் தேவைப்பட்டால் தரவுத்தள கட்டமைப்பை மாற்றும்

உள்ளமைவை அமைக்க மூன்றாவது வழி உள்ளது - தொட்டிகள் மூலம். இது பொதுவாக ஸ்பிரிங் உடன் இணைந்து பயன்படுத்தப்படுகிறது, எனவே நாம் SpringFramework கற்கும்போது அதைப் பார்ப்போம்.

3.3 அமர்வு தொழிற்சாலையைப் பெறுங்கள்

அடுத்த படி SessionFactory பொருளைப் பெறுவது. இதைச் செய்ய பல வழிகள் உள்ளன:

hibernate.properties கோப்பைப் பயன்படுத்துவது முதல் வழி .

இதைச் செய்ய, நீங்கள் பின்வரும் குறியீட்டை எழுத வேண்டும்:

SessionFactory sessionFactory = new Configuration().buildSessionFactory();

தற்போதைய திட்டக் கோப்பகத்தில் hibernate.properties கோப்பு இல்லை என்றால், விதிவிலக்கு அளிக்கப்படும்.

இரண்டாவது வழி hibernate.cfg.xml ஐப் பயன்படுத்தி உள்ளமைவு ஆகும் .

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

நீங்கள் அத்தகைய குறியீட்டை எழுதினால், hibernate.cfg.xml. அத்தகைய கோப்பு எதுவும் காணப்படவில்லை என்றால், முறை buildSessionFactory()விதிவிலக்கு அளிக்கும்.

மூன்றாவது வழி, உள்ளமைவு கோப்பை கைமுறையாக அமைப்பது .

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

SessionFactory sessionFactory = new Configuration().configure("hibernate-dev.cfg.xml").buildSessionFactory();

முறை நான்கு - தனிப்பயன் hibernate.properties கோப்பைப் பயன்படுத்துகிறோம்:

ClassLoader classLoader = Thread.currentThread().getClassLoader();

Properties properties = new Properties();
properties.load(classLoader.getResourceAsStream("hibernate-dev.properties"));

SessionFactory sessionFactory = new Configuration()
            .addProperties(properties)
            .buildSessionFactory();

இறுதியாக, நீங்கள் தேவையான அனைத்து அளவுருக்களையும் நேரடியாக குறியீட்டில் தைக்கலாம்:

Properties properties = new Properties();
properties.put(Environment.DRIVER, "com.mysql.jdbc.Driver");
properties.put(Environment.URL, "jdbc:mysql://localhost:3306/supershop");
properties.put(Environment.USER, "root");
properties.put(Environment.PASS, "password");

SessionFactory sessionFactory = new Configuration()
            .setProperties(properties)
            .buildSessionFactory();

3.4 நிறுவன வகுப்புகளை எங்கு தேடுவது என்பதைக் குறிப்பிடவும்

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

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

நிறுவன வகுப்புகளின் பட்டியலை அனுப்ப மூன்று வழிகள் உள்ளன:

முறை ஒன்று. hibernate.cfg.xmlஇது போன்ற ஒரு வரியைச் சேர்க்கவும் :

<mapping class="class-qualified-name" />

உதாரணமாக:

<mapping class="com.codegym.data.User" />
<mapping class="com.codegym.data.Employee" />
<mapping class="com.codegym.data.Task" />

முறை இரண்டு. உள்ளமைவு பொருளில் உள்ள முறையை அழைக்கவும் addAnnotatedClass(). உதாரணமாக:

SessionFactory sessionFactory = new Configuration()
   	.configure()
   	.addAnnotatedClass(com.codegym.data.User.class)
   	.buildSessionFactory();

பல வகுப்புகள் இருந்தால், அவற்றை முழு தொகுப்புகளிலும் சேர்க்கலாம்:

SessionFactory sessionFactory = new Configuration()
   	.configure()
   	.addPackage("com.codegym.data")
   	.buildSessionFactory();

3.5 இறுதி உதாரணம்

SessionFactory ஆப்ஜெக்டை எவ்வாறு கட்டமைப்பது என்பதை இப்போது கற்றுக்கொண்டோம், அதைப் பயன்படுத்தும் குறியீட்டை எழுதுவோம்.

இது மூன்று முறைகளைக் கொண்டிருக்கும்:

  1. ஹைபர்னேட்டை உள்ளமைக்கிறது
  2. தரவுத்தளத்திலிருந்து அனைத்து ஊழியர்களையும் பெறும் முறை
  3. ஒரு புதிய பணியாளரை தரவுத்தளத்தில் சேமிக்கும் முறை

இந்த குறியீடு டெம்ப்ளேட் இப்படி இருக்கும்:

class EmployeeManager {
    private SessionFactory sessionFactory;

    public void class init() {
    	this.sessionFactory = new Configuration()
        	.configure()
        	.buildSessionFactory();
   }

   public List<Employee> getAllEmployes() {
         try (Session session = sessionFactory.openSession()) {
  	          Query<Employee> query = session.createQuery("from Employee", Employee.class);
    	        return query.list();
         }
   }

   public void addEmployee(Employee employee ) {
     	try (Session session = sessionFactory.openSession()) {
            Transaction transaction = session.beginTransaction();
       	    session.save(employee);
            transaction.commit();
     	}
   }
}

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

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

மேலும், தரவுத்தளத்திற்கான ஒவ்வொரு வினவலும் அதன் சொந்த பரிமாற்றத்தில் செயல்படுத்தப்படுகிறது. நீங்கள் அதைத் திறக்க வேண்டும், தேவையான செயல்பாடுகளைச் செய்ய வேண்டும், பின்னர் மூட வேண்டும் (கமிட்).

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