Query Session - IV
Different ways to express queries in Hibernate Hibernate Query Language (HQL) Criteria API for  query by criteria  (QBC) query by example  (QBE) NativeSql using Hibernate API
HQL Sample HQL Query Query qry = session.createQuery("from Message");   List list = qry.list();
Bind Parameters in HQL Named parameters: String queryString = "from Item item where item.description like :search"; Query q = session.createQuery(queryString)   .setString("search", searchString); Positional parameters: String queryString = "from Item item where item.description like ?"; Query q = session.createQuery(queryString)   .setString(0, searchString);
Executing a Query Listing all results Ex: Query qry = session.createQuery("from Item"); List list = qry.list(); Iterating through the results Ex: Query qry = session.createQuery("from Item "); Iterator it = qry.iterate(); Scrolling with database cursors Ex: Query qry = session.createQuery("from Item "); ScrollableResults scrolRS = qry.scroll();
Named Query Mapping Details: <hibernate-mapping> <sql-query name=&quot;getByName&quot;> <return alias=&quot;m&quot; class=&quot;hello.Message&quot;/> SELECT {m.*} FROM MESSAGES m WHERE m.MSG_TEXT = ? </sql-query> </hibernate-mapping> Usage: Query qry = session.getNamedQuery(&quot;getByName&quot;); qry.setParameter(0, &quot;Kathir Text&quot;); List msgList = qry.list();
Joins in HQL An  implicit  association join EX:   from Item i where i.bids.amount > 100 An  ordinary  join in the FROM clause EX:    from Item i join i.bids b where i.name = 'aa' and  b.amount >50 A  fetch  join in the FROM clause EX:    from Item i left join fetch i.bids A  theta-style  join in the WHERE clause EX:    from Item i,Message m where i.name = m.text
Marshalling Scalar Resultset Normal Query select i.id,i.name,b.amount from Item i join i.bids b where i.name = 'aa‘ It returns collection of object[]. Marshalling Scalar Values select new ItemBidDetail(i.id,i.name,b.amount) from Item i join i.bids b where i.name = 'aa‘ It returns collection of ItemBidDetail.
Criteria Sample Criteria User user = (User) session.createCriteria(User.class) .add(Restrictions.eq(&quot;email&quot;, &quot;foo@hibernate.org&quot;)) .list();
Few Criteria samples Sample1:- List result = session.createCriteria(Item.class) .add(Restrictions.like(&quot;description&quot;,&quot;Foo&quot;,MatchMode.ANYWHERE)) .createCriteria(&quot;bids&quot;) . add( Restrictions.gt(&quot;amount&quot;, new BigDecimal(99) ) ).list(); Sample2:- session.createCriteria(User.class) .add( Restrictions.eq(&quot;username&quot;, &quot;foo&quot;).ignoreCase() ); Sample3:- session.createCriteria(Item.class) .createAlias(&quot;bids&quot;, &quot;b&quot;) .add( Restrictions.like(&quot;description&quot;, &quot;%Foo%&quot;) ) .add( Restrictions.gt(&quot;b.amount&quot;, new BigDecimal(99) ) ); Sample4:- session.createCriteria(Item.class) .setFetchMode(&quot;bids&quot;, FetchMode.JOIN) .add( Restrictions.like(&quot;description&quot;, &quot;%Foo%&quot;) );
Sample5:- session.createCriteria(Item.class) .add( Restrictions.gt(&quot;endDate&quot;, new Date()) ) .setProjection( Projections.id() ); Sample6:- session.createCriteria(Item.class) .setProjection( Projections.projectionList() .add( Projections.id() ) .add( Projections.property(&quot;description&quot;) ) .add( Projections.property(&quot;initialPrice&quot;) ) ); Sample7:- Criteria cri = session.createCriteria(Bid.class)   .setProjection(Projections. projectionList ()   .add(Projections. id ().as(&quot;bidId&quot;))   .add(Projections. property (&quot;amount&quot;).as(&quot;amount&quot;))   ) .setResultTransformer(new  AliasToBeanResultTransformer(BidDetails.class) ) .addOrder(Order. asc (&quot;amount&quot;)); Few Criteria samples cont..,
Example Sample Example Item item = new Item(); item.setName(&quot;TV&quot;); Criteria cri = session.createCriteria(Item.class)   .add(Example. create (item));
Native SQL Queries Auto Marshalling Sample1:- List result = session.createSQLQuery(&quot;select * from CATEGORY&quot;) .addEntity(Category.class).list(); Auto Marshalling Sample2:- session.createSQLQuery( &quot;select {i.*} from ITEM I  join USERS u on i.SELLER_ID = u.USER_ID&quot; + &quot; where u.USERNAME = :uname&quot;) .addEntity(&quot;i&quot;, Item.class) .setParameter(&quot;uname&quot;, &quot;johndoe&quot;);

Hibernate Session 4

  • 1.
  • 2.
    Different ways toexpress queries in Hibernate Hibernate Query Language (HQL) Criteria API for query by criteria (QBC) query by example (QBE) NativeSql using Hibernate API
  • 3.
    HQL Sample HQLQuery Query qry = session.createQuery(&quot;from Message&quot;); List list = qry.list();
  • 4.
    Bind Parameters inHQL Named parameters: String queryString = &quot;from Item item where item.description like :search&quot;; Query q = session.createQuery(queryString) .setString(&quot;search&quot;, searchString); Positional parameters: String queryString = &quot;from Item item where item.description like ?&quot;; Query q = session.createQuery(queryString) .setString(0, searchString);
  • 5.
    Executing a QueryListing all results Ex: Query qry = session.createQuery(&quot;from Item&quot;); List list = qry.list(); Iterating through the results Ex: Query qry = session.createQuery(&quot;from Item &quot;); Iterator it = qry.iterate(); Scrolling with database cursors Ex: Query qry = session.createQuery(&quot;from Item &quot;); ScrollableResults scrolRS = qry.scroll();
  • 6.
    Named Query MappingDetails: <hibernate-mapping> <sql-query name=&quot;getByName&quot;> <return alias=&quot;m&quot; class=&quot;hello.Message&quot;/> SELECT {m.*} FROM MESSAGES m WHERE m.MSG_TEXT = ? </sql-query> </hibernate-mapping> Usage: Query qry = session.getNamedQuery(&quot;getByName&quot;); qry.setParameter(0, &quot;Kathir Text&quot;); List msgList = qry.list();
  • 7.
    Joins in HQLAn implicit association join EX: from Item i where i.bids.amount > 100 An ordinary join in the FROM clause EX: from Item i join i.bids b where i.name = 'aa' and b.amount >50 A fetch join in the FROM clause EX: from Item i left join fetch i.bids A theta-style join in the WHERE clause EX: from Item i,Message m where i.name = m.text
  • 8.
    Marshalling Scalar ResultsetNormal Query select i.id,i.name,b.amount from Item i join i.bids b where i.name = 'aa‘ It returns collection of object[]. Marshalling Scalar Values select new ItemBidDetail(i.id,i.name,b.amount) from Item i join i.bids b where i.name = 'aa‘ It returns collection of ItemBidDetail.
  • 9.
    Criteria Sample CriteriaUser user = (User) session.createCriteria(User.class) .add(Restrictions.eq(&quot;email&quot;, &quot;foo@hibernate.org&quot;)) .list();
  • 10.
    Few Criteria samplesSample1:- List result = session.createCriteria(Item.class) .add(Restrictions.like(&quot;description&quot;,&quot;Foo&quot;,MatchMode.ANYWHERE)) .createCriteria(&quot;bids&quot;) . add( Restrictions.gt(&quot;amount&quot;, new BigDecimal(99) ) ).list(); Sample2:- session.createCriteria(User.class) .add( Restrictions.eq(&quot;username&quot;, &quot;foo&quot;).ignoreCase() ); Sample3:- session.createCriteria(Item.class) .createAlias(&quot;bids&quot;, &quot;b&quot;) .add( Restrictions.like(&quot;description&quot;, &quot;%Foo%&quot;) ) .add( Restrictions.gt(&quot;b.amount&quot;, new BigDecimal(99) ) ); Sample4:- session.createCriteria(Item.class) .setFetchMode(&quot;bids&quot;, FetchMode.JOIN) .add( Restrictions.like(&quot;description&quot;, &quot;%Foo%&quot;) );
  • 11.
    Sample5:- session.createCriteria(Item.class) .add(Restrictions.gt(&quot;endDate&quot;, new Date()) ) .setProjection( Projections.id() ); Sample6:- session.createCriteria(Item.class) .setProjection( Projections.projectionList() .add( Projections.id() ) .add( Projections.property(&quot;description&quot;) ) .add( Projections.property(&quot;initialPrice&quot;) ) ); Sample7:- Criteria cri = session.createCriteria(Bid.class) .setProjection(Projections. projectionList () .add(Projections. id ().as(&quot;bidId&quot;)) .add(Projections. property (&quot;amount&quot;).as(&quot;amount&quot;)) ) .setResultTransformer(new AliasToBeanResultTransformer(BidDetails.class) ) .addOrder(Order. asc (&quot;amount&quot;)); Few Criteria samples cont..,
  • 12.
    Example Sample ExampleItem item = new Item(); item.setName(&quot;TV&quot;); Criteria cri = session.createCriteria(Item.class) .add(Example. create (item));
  • 13.
    Native SQL QueriesAuto Marshalling Sample1:- List result = session.createSQLQuery(&quot;select * from CATEGORY&quot;) .addEntity(Category.class).list(); Auto Marshalling Sample2:- session.createSQLQuery( &quot;select {i.*} from ITEM I join USERS u on i.SELLER_ID = u.USER_ID&quot; + &quot; where u.USERNAME = :uname&quot;) .addEntity(&quot;i&quot;, Item.class) .setParameter(&quot;uname&quot;, &quot;johndoe&quot;);