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

درس 22 : آموزش Mapping Bag در آدرس دهی مجموعه های Hibernate

آموزش Mapping Bag در آدرس دهی مجموعه های Hibernate :

اگر کلاس Persistent Class شما شامل اشیای لیست دار List object است، می توانید List را به وسیله المنت list یا bag در فایل آدرس دهی mapping file آدرس دهی یا map کنید. المنت bag کاملا مشابه المنت List می باشد با این تفاوت که نیاز به المنت index ندارد.
در این درس، همانند درس های قبل از سناریوی برنامه نویسی انجمن برای تشریح مثال خود استفاده می کنیم که در آن هر سوال می تواند چندین جواب داشته باشد. شکل زیر، نحوه عملکرد یک انجمن را نشان می دهد :

آموزش Mapping Bag در آدرس دهی مجموعه های Hibernate

در کد زیر به آموزش نحوه پیاده سازی المنت bag در فایل آدرس دهی mapping file پرداخته ایم :

 
  
       ...        
            
            
            
            
            
       ...  
  
            

مثال عملی Mapping bag در آدرس دهی مجموعه های Hibernate :

در این مثال، قصد داریم تا به طور کامل نحوه آدرس دهی مجموعه های Hibernate به وسیله bag را آموزش دهیم. در این مثال bag، این عنصر مقایسه (Values) را نگهداری می کند تا رفرنس های entity را، به همین دلیل، ما از المنت element به جای one-to-many در کد خود استفاده می کنیم.
اگر مثال mapping list را در درس های قبل مشاهده کرده باشید، این مثال نیز کاملا همانند آن است به جز این که در mapping file به جای list از bag استفاده می کنیم.
برای اجرای مثال، مراحل زیر را به ترتیب انجام دهید :

1)ایجاد کلاس Persistent Class :
کلاس Persistent Class کلیه خواص Properties لازم جهت class را از جمله List تعیین می کند، به صورت زیر :

  
package com.javatpoint;  
  
import java.util.List;  
  
public class Question {  
private int id;  
private String qname;  
private List answers;  
  
//getters and setters  
  
}  
            

2)ایجاد فایل آدرس دهی mapping file برای کلاس Persistent :
در این بخش، فایل question .hbm.xml را برای تعیین list ایجاد کرده ایم :

  
  
  
  
  
   
     
       
     
     
            
     
       
       
     
            
   
            
  
            

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

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

4)ایجاد کلاس لازم جهت نگهداری اطلاعات :
در کلاس زیر نیز اقدام به نگهداری اطلاعات کلاس question class پرداخته ایم :

 
package com.javatpoint;  
  
import java.util.ArrayList;  
  
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();  
      
    ArrayList list1=new ArrayList();  
    list1.add("java is a programming language");  
    list1.add("java is a platform");  
      
    ArrayList list2=new ArrayList();  
    list2.add("Servlet is an Interface");  
    list2.add("Servlet is an API");  
      
    Question question1=new Question();  
    question1.setQname("What is Java?");  
    question1.setAnswers(list1);  
      
    Question question2=new Question();  
    question2.setQname("What is Servlet?");  
    question2.setAnswers(list2);  
      
    session.persist(question1);  
    session.persist(question2);  
      
    t.commit();  
    session.close();  
    System.out.println("success");  
 }  
}  
                 

آموزش نحوه استخراج (fetch) اطلاعات :

در این بخش، ما از زبان HQL برای استخراج و دریافت (fetch) اطلاعات کلیه رکوردهای کلاس Question از جمله answers پرداخته ایم. در چنین موردی، برنامه اطلاعات را از دو جدول مختلف کد به صورت functional dependent هستند، دریافت می کند.

 
package com.javatpoint;  
  
import java.util.*;  
  
import org.hibernate.*;  
import org.hibernate.cfg.*;  
  
public class FetchData {  
public static void main(String[] args) {  
      
    Session session=new Configuration().configure("hibernate.cfg.xml")  
                        .buildSessionFactory().openSession();  
      
    Query query=session.createQuery("from Question");  
    List list=query.list();  
      
    Iterator itr=list.iterator();  
    while(itr.hasNext()){  
        Question q=itr.next();  
        System.out.println("Question Name: "+q.getQname());  
          
        //printing answers  
        List list2=q.getAnswers();  
        Iterator itr2=list2.iterator();  
        while(itr2.hasNext()){  
            System.out.println(itr2.next());  
        }  
          
    }  
    session.close();  
    System.out.println("success");  
      
}  
}  
            
1395/07/11 2641 1015
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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