کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

درس پانزدهم : آموزش مدل نگاشت Table Per Concrete Class با استفاده از فایل xml

آموزش مدل نگاشت Table Per Concrete Class با استفاده از فایل xml

Cدر مدل نگاشت Table Per Concrete Class ، به ازای هر کلاس برنامه یک جدول در پایگاه داده ایجاد می شود که این جدول ها، هیچ نوع ارتباطی با هم ندارند. دو راه برای اتصال و ایجاد ارتباط بین جدول (Table) و مدل نگاشت Table Per Concrete Class وجود دارد که عبارتند از :

 

  • استفاده از المنت Unio-Subclass.
  • به وسیله ایجاد خود به خودی جدول برای هر کلاس.

ابتدا، بیایید نگاهی به کلاس های مثال درس و سلسله مراتب وراثت در آن ها بیاندازیم. دیاگرام زیر نشان دهنده کلاس ها و خواص آن هاست :

آموزش مدل نگاشت Table Per Concrete Class با استفاده از فایل xml

در کد فایل زیر، به وسیله المنت Union-subclass عمل نگاشت و آدرس دهی سلسله مراتب (hierarchy) را نشان داده ایم. ابتدا به مطالعه کد بپردازید، سپس به تشریح بخش های آن خواهیم پرداخت :

 
   
  
  
    
    
    
    
    
           
    
            
    
    
    
    
            
    
    
    
    
            
    
            
    
            

در مدل نگاشت Table Per Concrete Class، 3 جدول در پایگاه داده وجود خواهد داشت که هر کدام نماینده یکی از کلاس های برنامه است. زیرالمنت Union-Subclass، کلاس متعلق به جدول را تعیین می کند. این المنت، ستون های جدول Parent را به جدول اضافه کرده و همانند یک اتصال (Union) عمل می کند.
ساختار کلی هر یک از جدول های مثال به صورت زیر خواهد بود :

Table structure for Employee class

Table structure for Employee class

Table structure for Regular_Employee class

Table structure for Regular_Employee class

Table structure for Contract_Employee class

Table structure for Contract_Employee class

مثال عملی مدل نگاشت Table Per Concrete Class :

در این مثال عملی، 3 کلاس اصلی مثال را ایجاد کرده و سپس در فایل employee.bhm.xml، آدرس دهی و نگاشت (mapping) مورد نظر را انجام خواهیم داد.

1)ایجاد کلاس های Persistent Class :

در ابتدا شما بایستی کلاس های اصلی و خام را که تحت عنوان Persistent Class نامیده می شوند و وراثت را مشخص می سازند، ایجاد کنید. کد این 3 کلاس به ترتیب زیر است :

File: Employee.java

 
package com.javatpoint.mypackage;  
  
public class Employee {  
private int id;  
private String name;  
  
//getters and setters  
}  
            

File: Regular_Employee.java

 
package com.javatpoint.mypackage;  
  
public class Regular_Employee extends Employee{  
private float salary;  
private int bonus;  
  
//getters and setters  
} 
            

File: Contract_Employee.java

 
 package com.javatpoint.mypackage;  
  
public class Contract_Employee extends Employee{  
    private float pay_per_hour;  
    private String contract_duration;  
  
//getters and setters  
}  
            

2)ایجاد فایل آدرس دهی (mapping) برای کلاس Persistent Class : نحوه آدرس دهی و نگاشت که در بخش قبل تشریح کردیم را به صورت زیر در فایل employee.bhm.xml تعیین می کنیم :

فایل : employee.bhm.xml

   
  
  
  
    
    
    
    
    
           
    
            
    
    
    
    
            
    
    
    
    
            
    
            
  
            

3)اضافه کردن آدرس دهی لازم جهت فایل hbm در فایل تنظیمات Configuration file :

فایل hibernate.xml را باز کرده و آدرس زیر را جهت mapping فایل hbm بر کد اضافه کنید :

 
                  
            

اکنون کد فایل تنظیمات برنامه به صورت زیر خواهد شد :

   
  
  
  
  
      
        update  
        org.hibernate.dialect.Oracle9Dialect  
        jdbc:oracle:thin:@localhost:1521:xe  
        system  
        oracle  
        oracle.jdbc.driver.OracleDriver  
      
      
  
  
            
نکته:

خاصیت hbm2ddl.anto جهت تولید خودکار جدول ها در پایگاه داده در فایل تنظیمات تعیین شده است.

4)ایجاد کلاس لازم جهت نگهداری مشی employee در پایگاه داده :
در کلاس زیر به نام storeData.java، اقدام به نگهداری اشیای employee در پایگاه داده (database) می کنیم :

File: StoreData.java

 
package com.javatpoint.mypackage;  

import org.hibernate.*;  
import org.hibernate.cfg.*;  
  
public class StoreData {  
public static void main(String[] args) {  
    Session session=new Configuration().configure("hibernate.cfg.xml")  
                        .buildSessionFactory().openSession();  
      
    Transaction t=session.beginTransaction();  
      
    Employee e1=new Employee();  
    e1.setName("sonoo");  
      
    Regular_Employee e2=new Regular_Employee();  
    e2.setName("Vivek Kumar");  
    e2.setSalary(50000);  
    e2.setBonus(5);  
      
    Contract_Employee e3=new Contract_Employee();  
    e3.setName("Arjun Kumar");  
    e3.setPay_per_hour(1000);  
    e3.setContract_duration("15 hours");  
      
    session.persist(e1);  
    session.persist(e2);  
    session.persist(e3);  
      
    t.commit();  
    session.close();  
    System.out.println("success");  
}  
}  
            
1395/06/30 2613 1021
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...