HQL example

The below program uses HQL which stands for Hibernate Query Language. In HQL we use class names instead of table names. And instead of using column names for the where clause, we use member variables. Also, note that if we want to retrieve all the records from the table, there is no need to use "select" clause. Below program retrieves student id's in between 2 and 8 and displays them in the console.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
        <property name="connection.username">hr</property>
        <property name="connection.password">hr</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.OracleDialect</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">create</property>

        <!-- Names the annotated entity class -->
        <mapping class="com.ram.dao.Student"/>

    </session-factory>

</hibernate-configuration>
File: com.ram.dao.Student.java
package com.ram.dao;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Student {
 @Id @GeneratedValue
 private int studentId;
 private String studentName;
 
 public int getStudentId() {
  return studentId;
 }
 public void setStudentId(int studentId) {
  this.studentId = studentId;
 }
 public String getStudentName() {
  return studentName;
 }
 public void setStudentName(String studentName) {
  this.studentName = studentName;
 }
}

File: com.ram.hibernate.HQLExample.java
package com.ram.hibernate;

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;

import com.ram.dao.Student;

public class HQLExample {
 public static void main(String[] args) {
  SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
  Session session = sessionFactory.openSession();
  session.beginTransaction();
  
  Query query = session.createQuery("from Student where studentId > 2 and studentId < 8");
  List students = query.list();
  System.out.println("No.of students between 2 and 8 are "+students.size());
  
  for(Iterator it = students.iterator(); it.hasNext();){
   Student stud = it.next();
   System.out.print("Student Id = "+stud.getStudentId());
   System.out.println("\tStudent Name = "+stud.getStudentName());
  }
  
  session.getTransaction().commit();
  session.close();
 }
}

Execute HQLExample.java and you get the output as shown below.

No comments:

Post a Comment