ஒரே நேரத்தில் இரண்டு தளங்களுடன் வேலை
நீங்கள் ஒரே நேரத்தில் இரண்டு தளங்களுடன் வேலை செய்ய வேண்டிய சூழ்நிலைகள் பெரும்பாலும் உள்ளன. எடுத்துக்காட்டாக, நீங்கள் ஒரு தரவுத்தளத்திலிருந்து தரவைப் படித்து, அதைச் செயலாக்கி மற்றொன்றுக்கு எழுதுங்கள்.
அல்லது இன்னும் பொதுவானது. உங்கள் பயன்பாட்டில் பணிபுரிய ஒரு உள்ளூர் தரவுத்தளம் உள்ளது, மேலும் SQL தரவு வினவல் வடிவமைப்பை ஆதரிக்கும் பல்வேறு தொலைநிலை மூலங்களிலிருந்து தரவையும் படிக்க முடியும். உதாரணமாக எக்செல்.
இந்த தொலைநிலை தரவு மூலங்களுக்கு, உங்களின் ஹைபர்னேட் மேப்பிங்கைத் தனிப்பயனாக்குவது மிகவும் பயனுள்ளதாக இருக்கும், இதனால் பயன்பாட்டின் வணிக தர்க்கம் எளிமையாகவும் ஜாவா பொருட்களுடன் மட்டுமே செயல்படவும் முடியும்.
இதைச் செய்வதற்கான எளிதான வழி, பல உள்ளமைவு கோப்புகளை வைத்திருப்பதாகும். உதாரணமாக, இது போன்றது:
hibernate_oracle.cfg.xml |
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="hibernate.connection.username">system</property>
<property name="hibernate.connection.password">secret<property>
<mapping resource="com/codegym/hibernate/multipledatabase/employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
|
hibernate_mysql.cfg.xml |
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/employee</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">secret</property>
<mapping resource="com/codegym/hibernate/multipledatabase/employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
|
சரி, அனைத்து ஹைபர்னேட் துவக்க குறியீடும் உண்மையில் நகல் எடுக்கப்பட்டது:
Configuration oracleCfg = new Configuration();
oracleCfg.configure("/com/codegym/hibernate/multipledatabase/hibernate_oracle.cfg.xml");
SessionFactory oracleSessionFactory = oracleCfg.buildSessionFactory();
Session oracleSession = oracleSessionFactory.openSession();
Configuration mysqlCfg = new Configuration();
mysqlCfg.configure("/com/codegym/hibernate/multipledatabase/hibernate_mysql.cfg.xml");
SessionFactory mySqlSessionFactory = mysqlCfg.buildSessionFactory();
Session mysqlSession = mySqlSessionFactory.openSession();
Employee emp = oracleSession.get(Employee.class, "E0087");
System.out.println("Employee retrived from Oracle Database");
Transaction tx = mysqlSession.beginTransaction();
mysqlSession.save(emp);
tx.commit();
System.out.println("Employee inserted in MySQL Database");
நினைவகத்தில் அடிப்படை
DBMS உள்ளன, அவை முற்றிலும் நினைவகத்தில் இருக்கும் தரவுத்தளங்கள். இத்தகைய டிபிஎம்எஸ்கள் பெரும்பாலும் நூலகங்களாக விநியோகிக்கப்படுகின்றன மற்றும் பொதுவான பயன்பாட்டில் எளிதாக சேர்க்கப்படுகின்றன. அத்தகைய DBMS, எடுத்துக்காட்டாக, H2 அல்லது Hsqldb ஆகும்.
மற்ற நூலகங்களைப் போலவே அவற்றை உங்கள் திட்டத்தில் சேர்க்கலாம் - மேவெனில் சார்புநிலையைப் பயன்படுத்தி:
hsqldb |
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.6.1</version>
<scope>test</scope>
</dependency>
|
உடனடியாக இரண்டாவது தளத்தின் எடுத்துக்காட்டு:
H2 தரவுத்தளம் |
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.214</version>
<scope>test</scope>
</dependency>
|
வழக்கமான தரவுத்தளங்களைப் போலவே நீங்கள் அவர்களுடன் பணியை உள்ளமைக்கலாம். ஆனால் வசதிக்காக இரண்டு எடுத்துக்காட்டுகளைக் கொடுப்போம்:
hsqldb |
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.hsqldb.jdbc.JDBCDriver</property>
<property name="hibernate.connection.url">jdbc:hsqldb:mem:test</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<property name="hibernate.current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
|
இரண்டு உள்ளமைவுகளுக்கு இடையே உள்ள முக்கிய வேறுபாடு connection.url:
H2 தரவுத்தளம் |
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:mem:test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<property name="hibernate.current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
|
GO TO FULL VERSION