CodeGym/Java Course/All lectures for BN purposes/হাইবারনেট সম্পর্কে দরকারী সূক্ষ্মতা

হাইবারনেট সম্পর্কে দরকারী সূক্ষ্মতা

বিদ্যমান

একই সময়ে দুটি ঘাঁটি নিয়ে কাজ করা

প্রায়শই এমন পরিস্থিতি থাকে যখন আপনাকে একই সময়ে দুটি ঘাঁটির সাথে কাজ করতে হবে। উদাহরণস্বরূপ, আপনি একটি ডাটাবেস থেকে ডেটা পড়েন, এটি প্রক্রিয়া করেন এবং অন্যটিতে লিখুন।

বা আরও সাধারণ। আপনার অ্যাপ্লিকেশনটির সাথে কাজ করার জন্য একটি স্থানীয় ডাটাবেস রয়েছে এবং 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>
মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই