Hibernate Named Query

This section contain description of named query with example.

Hibernate Named Query

Hibernate Named Query

This section contain description of named query with example.

Hibernate Named Query :

Hibernate provides concept of named query. It is very useful concept as you tie your HQL or native query outside your main code.
In Hibernate named query, your queries are mentioned into the mapping file (*.hbm files) or by using annotation.

1. XML Mapping File : Here you can see how to declare named query in mapping xml file (*.hbm file ) -

<sql-query name="SelectStudentDetail">
<return alias="student" class="net.roseindia.table.Student"/>
<![CDATA[select * from student s]]>
</sql-query>

2. Annotation : Hibernate provide named query concept using annotation. Take a view how to use annotation for named query.

@NamedQueries({
@NamedQuery(
name="SelectStudentName",
query="SELECT stud FROM Student stud"

)
}
)

Example : Now we are going to give example which will help you in understanding how to use named query in hibernate.

In this example we are using annotation. Student.java is our persistent class.

package net.roseindia.table;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@NamedQueries({
@NamedQuery(
name="SelectStudentDetail",
query="SELECT stud FROM Student stud"

)
}
)
@Entity
@Table(name="student")
public class Student implements Serializable {

@Id
@GeneratedValue
@Column(name="roll_no")
private int roll;

@Column(name="name")
private String name;

@Column(name="course")
private String course;

public Student() {

}

public int getRoll() {
return roll;
}

public void setRoll(int roll) {
this.roll = roll;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCourse() {
return course;
}

public void setCourse(String course) {
this.course = course;
}

}

Here is main class showing how to use named query -

package net.roseindia.apps;

import java.util.Iterator;
import java.util.List;

import net.roseindia.table.Student;
import net.roseindia.util.HibernateUtil;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public class MyApps {
public static void main(String []args){
Session session=HibernateUtil.getSessionFactory().openSession();
try{
Query query=session.getNamedQuery("SelectStudentDetail");

List list = query.list();
Iterator iterator = list.iterator();
System.out.println("Roll No\tName\tCourse");
System.out.println("-------------------------");
while(iterator.hasNext()){ 
Student stud = (Student) iterator.next();
System.out.print(stud.getRoll());
System.out.print("\t"+stud.getName());
System.out.print("\t"+stud.getCourse());
System.out.println();
}


}catch(HibernateException e){
e.printStackTrace();
}
}
}

session.getNamedQuery() is used for calling the named query.You can call it by using named query name as in this example is "SelectStudentDetail" .

Output :

Hibernate: select student0_.roll_no as roll1_0_, student0_.course as course0_, student0_.name as name0_ from student student0_
Roll No   Name    Course
-------------------------
1         Rondy   java
3         Johny   unix
4         Roxi    Hibernate
5         Johny   Hibernate
6         johny   C

Click here to download complete code