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

درس 32 : آموزش آدرس دهی Association با one-to-one در Hibernate – بخش دوم

 آموزش آدرس دهی Association Mapping با روش one-to-one در Hibernate – بخش دوم :

همانطور که در درس قبل مطرح کردیم، دو راه برای آدرس دهی one to one mapping در Hibernate وجود دارد که عبارتند از :

  • استفاده از المنت many-to-one.
  • استفاده از المنت one-to-one.

در این درس قصد داریم روش اجرای آدرس دهی one to one mapping را با استفاده از المنت one-to-one آموزش دهیم. در چنین موردی، هیچ کلید خارجی foreign key به جدول اصلی برنامه اضافه نمی شود.
در این مثال، هر employee فقط یک آدرس (Address) داشته و هر Address نیز فقط متعلق یک employee است. در این مثال، از استراتژی روابط دو طرفه یا Bidirectional Association استفاده خواهیم کرد.
برای اجرای مثال، مراحل زیر را به ترتیب انجام دهید :

1)ایجاد کلاس Persistent Class برای آدرس دهی one to one mapping :
در مثال دو کلاس Employee.java و Address.java به عنوان کلاس های Persistent قرار دارند. کلاس Employee حاوی یک رفرنس به کلاس Address می باشد و برعکس.

فایل Employee.java

  
package com.javatpoint;  
  
public class Employee {  
private int employeeId;  
private String name,email;  
private Address address;  
//setters and getters  
}  
            

فایل Address.java

  
package com.javatpoint;  
  
public class Address {  
private int addressId;  
private String addressLine1,city,state,country;  
private int pincode;  
private Employee employee;  
//setters and getters  
}  
            

2)ایجاد فایل آدرس دهی Mapping file جهت کلاس Persistent :
مثال دارای دو فایل آدرس دهی mapping file با نام های employee.hbm.xml و address.hbm.xml است که کد آن ها در ادامه قرار داده شده است.

فایل employee.hbm.xml

  
  
  
  
            
            
            
            
            
            
            
            
            
            

 

 

در این فایل آدرس دهی mapping file ها در هر دو فایل از المنت one-to-one برای آدرس دهی یا mapping استفاد ه کرده ایم :

کد زیر فایل ساده آدرس دهی mapping file را برای کلاس Address نشان می دهد. اما نکته مهم وجود کلاس سازنده یا generator است. در اینجا ما داریم از یک کلاس سازنده خارجی یا foreign generator class استفاده می کنیم که بر اساس کلید اصلی کلاس Employee کار می کند.

فایل address.hbm.xml

  

<  !DOC TYPE hibernate-mapping PUBLIC  
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
          "hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >  
  
             
            
            
            
          employee  
            
            
            
            
            
            
            
            
            
            

            

3 ) ایجاد فایل تنظیمات Congiguration file :
فایل تنظیمات Configuration file اطلاعات لازم جهت کار با database و فایل آدرس دهی mapping file می باشد.

فایل hibernate.cfg.xml

  
  
< !DOC TYPE hibernate-configuration PUBLIC  
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
          "hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  
  
  
  
      
        update  
        org.hibernate.dialect.Oracle9Dialect  
        jdbc:oracle:thin:@localhost:1521:xe  
        system  
        oracle  
        oracle.jdbc.driver.OracleDriver  
      
      
      
  
 
            

4)ایجاد کلاس های لازم برای دریافت و نگهداری اطلاعات :

فایل Store.java

package com.javatpoint;  
import org.hibernate.cfg.*;  
import org.hibernate.*;  
  
public class Store {  
public static void main(String[] args) {  
    Configuration cfg=new Configuration();  
    cfg.configure("hibernate.cfg.xml");  
    SessionFactory sf=cfg.buildSessionFactory();  
    Session session=sf.openSession();  
    Transaction tx=session.beginTransaction();  
      
    Employee e1=new Employee();  
    e1.setName("Ravi Malik");  
    e1.setEmail("ravi@gmail.com");  
      
    Address address1=new Address();  
    address1.setAddressLine1("G-21,Lohia nagar");  
    address1.setCity("Ghaziabad");  
    address1.setState("UP");  
    address1.setCountry("India");  
    address1.setPincode(201301);  
      
      
    e1.setAddress(address1);  
    address1.setEmployee(e1);  
      
    session.persist(e1);  
    tx.commit();  
      
    session.close();  
    System.out.println("success");  
}  
}  
            

فایل Fetch.java

package com.javatpoint;  
import java.util.Iterator;  
import java.util.List;  
import org.hibernate.Query;  
import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.cfg.Configuration;  
  
public class Fetch {  
public static void main(String[] args) {  
    Configuration cfg=new Configuration();  
    cfg.configure("hibernate.cfg.xml");  
    SessionFactory sf=cfg.buildSessionFactory();  
    Session session=sf.openSession();  
      
    Query query=session.createQuery("from Employee e");  
    List list=query.list();  
      
    Iterator itr=list.iterator();  
    while(itr.hasNext()){  
     Employee emp=itr.next();  
     System.out.println(emp.getEmployeeId()+" "+emp.getName()+" "+emp.getEmail());  
     Address address=emp.getAddress();  
     System.out.println(address.getAddressLine1()+" "+address.getCity()+" "+  
        address.getState()+" "+address.getCountry());  
    }  
  
    session.close();  
    System.out.println("success");  
}  
}  
            
1395/07/11 2563 885
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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