In this tutorial of Criteria in Hibernate Example we will discuss about the Criteria API of hibernate it is using for fetching data from the database in the Hibernate.
There are three way to pulling data from the database in the Hibernate.
The API (Application Programming Interface) of Hibernate Criteria provides an elegant way of building dynamic query on the persistence database.
The hibernate criteria API is very Simplified API for fetching data from Criterion objects. The criteria API is an alternative of HQL (Hibernate Query Language) queries. It is more powerful and flexible for writing tricky criteria functions and dynamic queries
Criteria criteria = session.createCriteria(Student.class);
Criteria criteria = session.createCriteria(Student.class); criteria.add(Restrictions.eq("studentName", "Dinesh Rajput")); criteria.add(Restrictions.le("rollNumber", 1));
Criteria criteria = session.createCriteria(Student.class); criteria.addOrder(Order.asc("studentName"));
The result is sort by “studentName” in descending order.
Criteria criteria = session.createCriteria(Student.class); criteria.addOrder(Order.desc("studentName"));
Criteria criteria = session.createCriteria(Student.class); criteria.setMaxResults(10); criteria.setFirstResult(5);
Student.java
package com.sdnext.hibernate.tutorial.dto; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="STUDENT") public class Student implements Serializable { /** * serialVersionUID */ private static final long serialVersionUID = 8633415090390966715L; @Id @Column(name="ID") @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column(name="STUDENT_NAME") private String studentName; @Column(name="ROLL_NUMBER") private int rollNumber; @Column(name="COURSE") private String course; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public int getRollNumber() { return rollNumber; } public void setRollNumber(int rollNumber) { this.rollNumber = rollNumber; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public String toString() { return "ROLL Number: "+rollNumber+"| Name: "+studentName+"| Course: "+course; } }
hibernate.cfg.xml
<hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernateDB2</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping class="com.sdnext.hibernate.tutorial.dto.Student"> </mapping></session-factory> </hibernate-configuration>
HibernateTestDemo.java
package com.sdnext.hibernate.tutorial; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.criterion.Restrictions; import com.sdnext.hibernate.tutorial.dto.Student; public class HibernateTestDemo { /** * @param args */ public static void main(String[] args) { SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Student.class); criteria.add(Restrictions.eq("studentName", "Dinesh Rajput")); List students = criteria.list(); for(Student student : students) { System.out.println(student); } session.getTransaction().commit(); session.close(); } }
Hibernate: select this_.ID as ID0_0_, this_.COURSE as COURSE0_0_, this_.ROLL_NUMBER as ROLL3_0_0_, this_.STUDENT_NAME as STUDENT4_0_0_ from STUDENT this_ where this_.STUDENT_NAME=?
ROLL Number: 1| Name: Dinesh Rajput| Course: MCA
In the Next Chapter we will discuss more about the Criteria Query with Restriction.
<<Previous Chapter 29<< >>Next Chapter 31>>