دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه! دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه!
🎯 ثبت نام

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

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

شما می توانید روش آدرس دهی one to one mapping را از دو راه انجام دهید :

  • به وسیله المنت many-to-one.
  • به وسیله المنت many-to-one.

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

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

فایل Employee.java

1
2
3
4
5
6
7
8
9
package com.javatpoint; 
   
public class Employee { 
private int employeeId; 
private String name,email; 
private Address address; 
//setters and getters 
            <button></button>

فایل Address.java

1
2
3
4
5
6
7
8
9
10
package com.javatpoint; 
   
public class Address { 
private int addressId; 
private String addressLine1,city,state,country; 
private int pincode; 
private Employee employee; 
//setters and getters 
            <button></button>

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

فایل employee.hbm.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--?xml version='1.0' encoding='UTF-8'?--> 
   
   
          <hibernate-mapping
          <class name="com.javatpoint.Employee" table="emp211"
          <id name="employeeId"
          <generator class="increment"></generator
          </id
          <property name="name"></property
          <property name="email"></property
             
          <many-to-one name="address" unique="true" cascade="all"></many-to-one
          </class
 
</hibernate-mapping>
            <button></button>

در این فایل آدرس دهی mapping file ما از المنت many –to- one با خاصیت Unique=”true” جهت آدرس دهی one to many mapping استفاده کرده ایم :

فایل address.hbm.xml

کد زیر فایل ساده آدرس دهی mapping file جهت کلاس Address را نشان می دهد :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--?xml version='1.0' encoding='UTF-8'?--> 
   
   
          <hibernate-mapping
          <class name="com.javatpoint.Address" table="address211"
          <id name="addressId"
          <generator class="increment"></generator
          </id
          <property name="addressLine1"></property
          <property name="city"></property
          <property name="state"></property
          <property name="country"></property
             
          </class
             
</hibernate-mapping>
            <button></button>

3)ایجاد فایل تنظیمات Configuration file :
فایل تنظیمات Configuration file حاوی اطلاعات لازم جهت کار با پایگاه داده و mpping file است :

فایل hibernate.cfg.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!--?xml version='1.0' encoding='UTF-8'?--> 
   
   
<!-- Generated by MyEclipse Hibernate Tools.                   --> 
<hibernate-configuration
   
    <session-factory
        <property name="hbm2ddl.auto">update</property
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property
        <property name="connection.username">system</property
        <property name="connection.password">oracle</property
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property
    <mapping resource="employee.hbm.xml"></mapping
    <mapping resource="address.hbm.xml"></mapping
    </session-factory
   
</hibernate-configuration
            <button></button>

4)ایجاد کلاس های لازم جهت استخراج fetch و ذخیره اطلاعات :

فایل Store.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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"); 
            <button></button>

فایل Fetch.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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<employee> list=query.list(); 
       
    Iterator<employee> 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"); 
 
            </employee></employee><button></button>
1395/07/11 2243 896
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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