Pagination in Hibernate Query Language (HQL)

<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;" trbidi&equals;"on">&NewLine;<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;" trbidi&equals;"on">&NewLine;<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;" trbidi&equals;"on">&NewLine;<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;" trbidi&equals;"on">&NewLine;<div style&equals;"color&colon; &num;20124d&semi;">In this tutorial of&nbsp&semi;Pagination in Hibernate Query Language &lpar;HQL&rpar; we will discuss about the pagination query in hibernate for pulling specific number data with different pages&period; Pagination of search results is a common requirement for any application&period;<&sol;p>&NewLine;<div align&equals;'center' id&equals;"ads-id"><&sol;div>&NewLine;<&sol;div>&NewLine;<div style&equals;"color&colon; &num;20124d&semi;">Out of performance reasons it is recommended to restrict the number of returned objects per query&period; In fact is a very common use case anyway that the user navigates from one page to an other&period; The way to define pagination is exactly the way you would define pagination in a plain HQL or Criteria query&period;<&sol;div>&NewLine;<div style&equals;"color&colon; &num;20124d&semi;">&NewLine;Using the <b>createQuery&lpar;&rpar;<&sol;b> method of a <b>Session<&sol;b> object that returns a <b>Query<&sol;b> object&period; First&comma; instantiate the Session object using the openSession&lpar;&rpar; method of <b>SessionFactory<&sol;b>&period; Then&comma; invoke the <i>createQuery&lpar;&rpar;<&sol;i> method on the resulting object&period;<&sol;div>&NewLine;<div style&equals;"color&colon; &num;20124d&semi;"><&sol;p>&NewLine;<pre class&equals;"highlight">Query q &equals; session&period;createQuery&lpar;"&period;&period;&period;"&rpar;&semi;&NewLine;q&period;setFirstResult&lpar;start&rpar;&semi;&NewLine;q&period;setMaxResults&lpar;length&rpar;&semi;<&sol;pre>&NewLine;<&sol;div>&NewLine;<&sol;div>&NewLine;<p><b><br &sol;>&NewLine;<&sol;b> <b>Student&period;java<&sol;b><&sol;p>&NewLine;<pre class&equals;"highlight" name&equals;"code">package com&period;sdnext&period;hibernate&period;tutorial&period;dto&semi;&NewLine;&NewLine;import java&period;io&period;Serializable&semi;&NewLine;&NewLine;import javax&period;persistence&period;Column&semi;&NewLine;import javax&period;persistence&period;Entity&semi;&NewLine;import javax&period;persistence&period;GeneratedValue&semi;&NewLine;import javax&period;persistence&period;GenerationType&semi;&NewLine;import javax&period;persistence&period;Id&semi;&NewLine;import javax&period;persistence&period;Table&semi;&NewLine;&NewLine;&commat;Entity&NewLine;&commat;Table&lpar;name&equals;"STUDENT"&rpar;&NewLine;public class Student implements Serializable &NewLine;&lbrace;&NewLine; &sol;&ast;&ast;&NewLine; &ast; serialVersionUID&NewLine; &ast;&sol;&NewLine; private static final long serialVersionUID &equals; 8633415090390966715L&semi;&NewLine; &commat;Id&NewLine; &commat;Column&lpar;name&equals;"ID"&rpar;&NewLine; &commat;GeneratedValue&lpar;strategy&equals;GenerationType&period;AUTO&rpar;&NewLine; private int id&semi;&NewLine; &commat;Column&lpar;name&equals;"STUDENT&lowbar;NAME"&rpar;&NewLine; private String studentName&semi;&NewLine; &commat;Column&lpar;name&equals;"ROLL&lowbar;NUMBER"&rpar;&NewLine; private int rollNumber&semi;&NewLine; &commat;Column&lpar;name&equals;"COURSE"&rpar;&NewLine; private String course&semi;&NewLine; public int getId&lpar;&rpar; &lbrace;&NewLine; return id&semi;&NewLine; &rcub;&NewLine; public void setId&lpar;int id&rpar; &lbrace;&NewLine; this&period;id &equals; id&semi;&NewLine; &rcub;&NewLine; public String getStudentName&lpar;&rpar; &lbrace;&NewLine; return studentName&semi;&NewLine; &rcub;&NewLine; public void setStudentName&lpar;String studentName&rpar; &lbrace;&NewLine; this&period;studentName &equals; studentName&semi;&NewLine; &rcub;&NewLine; public int getRollNumber&lpar;&rpar; &lbrace;&NewLine; return rollNumber&semi;&NewLine; &rcub;&NewLine; public void setRollNumber&lpar;int rollNumber&rpar; &lbrace;&NewLine; this&period;rollNumber &equals; rollNumber&semi;&NewLine; &rcub;&NewLine; public String getCourse&lpar;&rpar; &lbrace;&NewLine; return course&semi;&NewLine; &rcub;&NewLine; public void setCourse&lpar;String course&rpar; &lbrace;&NewLine; this&period;course &equals; course&semi;&NewLine; &rcub;&NewLine; public String toString&lpar;&rpar;&NewLine; &lbrace;&NewLine; return "ROLL Number&colon; "&plus;rollNumber&plus;"&vert; Name&colon; "&plus;studentName&plus;"&vert; Course&colon; "&plus;course&semi;&NewLine; &rcub;&NewLine;&rcub;&NewLine;<&sol;pre>&NewLine;<p>&NewLine;<&sol;div>&NewLine;<p><b><br &sol;>&NewLine;<&sol;b> <b>hibernate&period;cfg&period;xml<&sol;b><br &sol;>&NewLine;<b><br &sol;>&NewLine;<&sol;b> <&sol;p>&NewLine;<pre class&equals;"highlight" name&equals;"code">&lt&semi;hibernate-configuration&gt&semi; &NewLine; &lt&semi;session-factory&gt&semi; &NewLine; &lt&semi;&excl;-- Database connection settings --&gt&semi;&NewLine; &lt&semi;property name&equals;"connection&period;driver&lowbar;class"&gt&semi;com&period;mysql&period;jdbc&period;Driver&lt&semi;&sol;property&gt&semi; &NewLine; &lt&semi;property name&equals;"connection&period;url"&gt&semi;jdbc&colon;mysql&colon;&sol;&sol;localhost&colon;3306&sol;hibernateDB2&lt&semi;&sol;property&gt&semi; &NewLine; &lt&semi;property name&equals;"connection&period;username"&gt&semi;root&lt&semi;&sol;property&gt&semi; &NewLine; &lt&semi;property name&equals;"connection&period;password"&gt&semi;root&lt&semi;&sol;property&gt&semi; &NewLine;&NewLine; &lt&semi;&excl;-- JDBC connection pool &lpar;use the built-in&rpar; --&gt&semi;&NewLine; &lt&semi;property name&equals;"connection&period;pool&lowbar;size"&gt&semi;1&lt&semi;&sol;property&gt&semi; &NewLine;&NewLine; &lt&semi;&excl;-- SQL dialect --&gt&semi;&NewLine; &lt&semi;property name&equals;"dialect"&gt&semi;org&period;hibernate&period;dialect&period;MySQLDialect&lt&semi;&sol;property&gt&semi; &NewLine;&NewLine; &lt&semi;&excl;-- Enable Hibernate's automatic session context management --&gt&semi;&NewLine; &lt&semi;property name&equals;"current&lowbar;session&lowbar;context&lowbar;class"&gt&semi;thread&lt&semi;&sol;property&gt&semi; &NewLine; &NewLine; &lt&semi;&excl;-- Disable the second-level cache --&gt&semi;&NewLine; &lt&semi;property name&equals;"cache&period;provider&lowbar;class"&gt&semi;org&period;hibernate&period;cache&period;NoCacheProvider&lt&semi;&sol;property&gt&semi; &NewLine;&NewLine; &lt&semi;&excl;-- Echo all executed SQL to stdout --&gt&semi;&NewLine; &lt&semi;property name&equals;"show&lowbar;sql"&gt&semi;true&lt&semi;&sol;property&gt&semi; &NewLine; &NewLine; &lt&semi;&excl;-- Drop and re-create the database schema on startup --&gt&semi;&NewLine; &lt&semi;property name&equals;"hbm2ddl&period;auto"&gt&semi;update&lt&semi;&sol;property&gt&semi; &NewLine; &NewLine; &NewLine; &lt&semi;mapping class&equals;"com&period;sdnext&period;hibernate&period;tutorial&period;dto&period;Student"&gt&semi;&NewLine; &NewLine; &lt&semi;&sol;mapping&gt&semi;&lt&semi;&sol;session-factory&gt&semi; &NewLine; &lt&semi;&sol;hibernate-configuration&gt&semi;&NewLine;<&sol;pre>&NewLine;<p>&NewLine;<b>HibernateTestDemo&period;java<&sol;b><&sol;p>&NewLine;<pre class&equals;"highlight" name&equals;"code">package com&period;sdnext&period;hibernate&period;tutorial&semi;&NewLine;&NewLine;import java&period;util&period;List&semi;&NewLine;&NewLine;import org&period;hibernate&period;Query&semi;&NewLine;import org&period;hibernate&period;Session&semi;&NewLine;import org&period;hibernate&period;SessionFactory&semi;&NewLine;import org&period;hibernate&period;cfg&period;AnnotationConfiguration&semi;&NewLine;&NewLine;import com&period;sdnext&period;hibernate&period;tutorial&period;dto&period;Student&semi;&NewLine;&NewLine;public class HibernateTestDemo &lbrace;&NewLine; &sol;&ast;&ast;&NewLine; &ast; &commat;param args&NewLine; &ast;&sol;&NewLine; public static void main&lpar;String&lbrack;&rsqb; args&rpar; &NewLine; &lbrace;&NewLine; SessionFactory sessionFactory &equals; new AnnotationConfiguration&lpar;&rpar;&period;configure&lpar;&rpar;&period;buildSessionFactory&lpar;&rpar;&semi;&NewLine; Session session &equals; sessionFactory&period;openSession&lpar;&rpar;&semi;&NewLine; session&period;beginTransaction&lpar;&rpar;&semi;&NewLine; &NewLine; String SQL&lowbar;QUERY &equals; "FROM Student student"&semi;&NewLine; Query query &equals; session&period;createQuery&lpar;SQL&lowbar;QUERY&rpar;&semi;&NewLine; query&period;setFirstResult&lpar;1&rpar;&semi;&sol;&sol;set first result start value&NewLine; query&period;setMaxResults&lpar;5&rpar;&semi;&sol;&sol;number of result to be display&NewLine; &NewLine; List students &equals; query&period;list&lpar;&rpar;&semi;&NewLine; for&lpar;Student student &colon; students&rpar;&NewLine; &lbrace;&NewLine; System&period;out&period;println&lpar;student&rpar;&semi;&NewLine; &rcub;&NewLine; session&period;getTransaction&lpar;&rpar;&period;commit&lpar;&rpar;&semi;&NewLine; session&period;close&lpar;&rpar;&semi;&NewLine; &rcub;&NewLine;&rcub;&NewLine;<&sol;pre>&NewLine;<div style&equals;"background-color&colon; &num;ff99cc&semi; border-width&colon; thin&semi; border&colon; solid&semi;">&NewLine;<div style&equals;"color&colon; blue&semi;"><b>Output&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"color&colon; red&semi;">log4j&colon;WARN No appenders could be found for logger &lpar;org&period;hibernate&period;cfg&period;annotations&period;Version&rpar;&period;<&sol;div>&NewLine;<div style&equals;"color&colon; red&semi;">log4j&colon;WARN Please initialize the log4j system properly&period;<&sol;div>&NewLine;<p>Hibernate&colon; select student0&lowbar;&period;ID as ID0&lowbar;&comma; student0&lowbar;&period;COURSE as COURSE0&lowbar;&comma; student0&lowbar;&period;ROLL&lowbar;NUMBER as ROLL3&lowbar;0&lowbar;&comma; student0&lowbar;&period;STUDENT&lowbar;NAME as STUDENT4&lowbar;0&lowbar; from STUDENT student0&lowbar; limit &quest;&comma; &quest;<br &sol;>&NewLine;ROLL Number&colon; 2&vert; Name&colon; Sweety Rajput&vert; Course&colon; PGDCP<br &sol;>&NewLine;ROLL Number&colon; 3&vert; Name&colon; Adesh Rajput&vert; Course&colon; MA<br &sol;>&NewLine;ROLL Number&colon; 4&vert; Name&colon; DEV&vert; Course&colon; MA<br &sol;>&NewLine;ROLL Number&colon; 5&vert; Name&colon; RAJ&vert; Course&colon; BA<br &sol;>&NewLine;ROLL Number&colon; 6&vert; Name&colon; Pradeep&vert; Course&colon; BA<&sol;div>&NewLine;<p><&sol;p>&NewLine;<div class&equals;"separator" style&equals;"clear&colon; both&semi; text-align&colon; center&semi;"><img border&equals;"0" height&equals;"132" src&equals;"http&colon;&sol;&sol;50&period;87&period;249&period;200&sol;~dineshon&sol;wp-content&sol;uploads&sol;2017&sol;04&sol;pagination&period;jpg" width&equals;"640"&sol;><&sol;div>&NewLine;<&sol;div>&NewLine;<p><b>In the <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;p&sol;understanding-parameter-binding-and-sql&period;html">Next Chapter<&sol;a> we will discuss about the <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;p&sol;understanding-parameter-binding-and-sql&period;html">Parameter Binding and SQL Injection<&sol;a>&period;<&sol;b><br &sol;>&NewLine;<b><br &sol;>&NewLine;<&sol;b> <b>&nbsp&semi; &nbsp&semi; &nbsp&semi; &nbsp&semi; &nbsp&semi; &nbsp&semi; &nbsp&semi;&nbsp&semi;<&sol;b><br &sol;>&NewLine;<b>&nbsp&semi; &nbsp&semi; &nbsp&semi; &nbsp&semi; &nbsp&semi;&nbsp&semi;&lt&semi;&lt&semi;<a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;p&sol;introducing-hqlhibernate-query-language&period;html" style&equals;"color&colon; blue&semi; font-family&colon; Times&comma; 'Times New Roman'&comma; serif&semi; font-size&colon; x-large&semi; line-height&colon; 14px&semi;">Previous Chapter 26<&sol;a>&lt&semi;&lt&semi; &nbsp&semi;&nbsp&semi; &gt&semi;&gt&semi;N<a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;p&sol;understanding-parameter-binding-and-sql&period;html" style&equals;"color&colon; blue&semi; font-size&colon; x-large&semi; line-height&colon; 14px&semi;">ext Chapter 28<&sol;a>&gt&semi;&gt&semi;<&sol;b><br &sol;>&NewLine;<b><br &sol;>&NewLine;<&sol;b> <b><br &sol;>&NewLine;<&sol;b> <b><br &sol;>&NewLine;<&sol;b> <b><br &sol;>&NewLine;<&sol;b> <b><br &sol;>&NewLine;<&sol;b><&sol;div>&NewLine;