CodeGym /Java Course /All lectures for HI purposes /हाइबरनेट के बारे में उपयोगी बारीकियाँ

हाइबरनेट के बारे में उपयोगी बारीकियाँ

All lectures for HI purposes
स्तर 1 , सबक 871
उपलब्ध

एक ही समय में दो ठिकानों के साथ काम करना

अक्सर ऐसे हालात होते हैं जब आपको एक ही समय में दो आधारों के साथ काम करने की आवश्यकता होती है। उदाहरण के लिए, आप एक डेटाबेस से डेटा पढ़ते हैं, उसे प्रोसेस करते हैं और दूसरे को लिखते हैं।

या और भी सामान्य। आपके एप्लिकेशन के पास काम करने के लिए एक स्थानीय डेटाबेस है, और 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 को अक्सर पुस्तकालयों के रूप में वितरित किया जाता है और एक विशिष्ट अनुप्रयोग में शामिल करना आसान होता है। ऐसे 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>

दो कॉन्फ़िगरेशन के बीच मुख्य अंतर कनेक्शन.यूआरएल है:

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>
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION