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

درس 36 : آموزش Hibernate Named Query

آموزش Hibernate Named Query :

Hibernate Named Quer راهی است برای استفاده از Query در سطح برنامه با استفاده از نام های معنی دار. به عبارت دیگر یک نام هم معنی با کارکرد Query برای آن انتخاب کرده و به وسیله آن نام Query مورد نطر را در برنامه های Hibernate فراخوانی و اجرا می کنیم.
Hibernate Named Quer همانند کاربرد alias در زبان SQL است. چهارچوب کاری Hibernate امکان استفاده از Named Query ها را فراهم کرده و به همین دلیل دیگر برنامه نویسان جاوا نیاز ندارند تا Query را در کل سطح برنامه پراکنده کنند.
دو روش برای تعیین Named Query در Hibernate وجود دارد :

  • استفاده از annotation.
  • استفاده از فایل mapping file.

آموزش Hibernate Named Query با استفاده از annotation :

اگر می خواهید از قابلیت Named Query در Hibernate استفاده کنید، بایستی با نحوه کار با annotation های @NamedQueries و @NamedQuery آشنا باشید.
@NamedQueries annotation برای تعیین Query های چند نامه به کار می رود.
@NamedQuery برای تعیین Query تک نام به کار می رود.
در کد زیر، مثال عملی استفاده از Named Query در Hibernate نشان داده شده است :

 
@NamedQueries(  
    {  
        @NamedQuery(  
        name = "findEmployeeByName",  
        query = "from Employee e where e.name = :name"  
        )  
    }  
)  
            

مثال عملی آموزش Hibernate Named Query با استفاده از annotation :

در این مثال، از annotation برای تعیین Named Query در کلاس Persistant Class استفاده می کنیم. این مثال دارای 3 فایل اصلی به شرح زیر است :

  • Employee.java.
  • hibernate.cfg.xml.
  • FetchDemo.

فایل Employee.java :

فایل زیر کد یک کلاس Persistent Classs است که از annotation برای تعیین Named Query استفاده کرده و آن را به عنوان یک موجودیت یا entity می گیرد.

package com.javatpoint;  
  
import javax.persistence.*;  
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.Id;  
  
@NamedQueries(  
    {  
        @NamedQuery(  
        name = "findEmployeeByName",  
        query = "from Employee e where e.name = :name"  
        )  
    }  
)  
  
@Entity  
@Table(name="em")  
public class Employee {  
      
    public String toString(){return id+" "+name+" "+salary+" "+job;}  
      
    int id;  
    String name;  
    int salary;  
    String job;  
    @Id  
    @GeneratedValue(strategy=GenerationType.AUTO)  
       
    //getters and setters  
}  
            

فایل hibernate.cfg.xml :

فایل زیر یک فایل تنظیمات یا Configuration file است که اطلاعات مهم برنامه از قبیل driver class، Url، User name، password، mapping class و غیره را نگهداری می کند.

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

فایل FetchData.java :

کد زیر کلاس FetchData است که از Named Query تعیین شده استفاده کرده و اطلاعات مورد نظر را بر مبنای Query از پایگاه داده استخراج می کند. متد getNamedQuery از Named Query استفاده کرده و یک نسخه یا instance از Query را بر می گرداند.

package com.javatpoint;  
  
import java.util.Iterator;  
import java.util.List;  
  
import org.hibernate.cfg.AnnotationConfiguration;  
import org.hibernate.*;  
  
public class FetchData {  
 public static void main(String[] args) {  
  
  AnnotationConfiguration configuration=new AnnotationConfiguration();  
   configuration.configure("hibernate.cfg.xml");  
   SessionFactory sFactory=configuration.buildSessionFactory();  
    Session session=sFactory.openSession();  
                  
    //Hibernate Named Query  
    Query query = session.getNamedQuery("findEmployeeByName");  
    query.setString("name", "amit");  
          
    List< Employee > employees=query.list();  
          
    Iterator< Employee > itr=employees.iterator();  
     while(itr.hasNext()){  
    Employee e=itr.next();  
    System.out.println(e);  
     }  
          
    session.close();  
      
  }  
}  
            

مثال عملی آموزش Named Query با استفاده از mapping file :

اگر بخواهید Named Query را با استفاده از mapping file تعیین کنید، بایستی از المنت query فایل hibernate-mapping برای این کار استفاده کنید.
در چنین حالتی، شما بایستی hbm فایل مورد نظر جهت تعیین Named Query را ایجاد نمایید. فایل های دیگر این مثال به جز فایل کلاس Persistent Class به نام Employee.java که در آن نیازی نیست برای تعیین Named Query از هیچ annotation ای استفاده کرده و فایل تنظیمات به نام hibernate.cfg.xml که در آن بایستی منبع لازم جهت mapping را در فایل hbm تعین کنید، همانند مثال قبل هستند.

فایل hbm مثال Named Query با استفاده از mapping file بایستی به صورت زیر باشد :

فایل emp.hbm.xml

 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
            

همچنین فایل کلاس Persistent Class نیز بایستی همانند زیر باشد :

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

سپس در مرحله آخر، منبع لازم جهت mapping یعنی mapping resource را در فایل hbm به صورت کد زیر اضافه کنید :

                  
            
1395/07/13 2837 967
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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