知识大全 Hibernate:HQL/QBC查询语言比较的用法

Posted

篇首语:瞄准还不是射中,起跑还不算到达。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate:HQL/QBC查询语言比较的用法相关的知识,希望对你有一定的参考价值。

Hibernate:HQL/QBC查询语言比较的用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Hib的检索方式

    

   导航对象图检索方式 通过已经加载的对象 调erator()方法可以得到order对象

    

  如果是首次执行此方法 Hib会从数据库加载关联的order对象 否则就从缓存中得到

    

   OID检索方式 通过session的get load方法知道了OID的情况下可以使用

    

   HQL检索方式 使用面向对象的HQL查询语句session的find方法利用HQL来查询

    

   QBC检索方式 利用QBCAPI来检索它是封装了基于字符串的查询语句

    

   本地的SQL检索方式 使用本地数据库的SQL查询语句Hib会负责把检索到的JDBC结果集映射为持久化对象图

    

  五种检索方式的使用场合和特点

    

  HQL 是面向对象的查询语言 同SQL有些相似是Hib中最常用的方式

    

  查询设定各种查询条件

    

  支持投影查询 检索出对象的部分属性

    

  支持分页查询 允许使用having和group by

    

  提供内制的聚集函数 sum() min() max()

    

  能调用用户的自定义SQL

    

  支持子查询 嵌入式查询

    

  支持动态绑定参数

    

  建议使用Query接口替换session的find方法

    

  Query Q = session createQuery( from customer as c where c name = :customerName + and c age = :customerAge );

  query setString ( customerName tom );

  query setInteger( customerAge );

  list result = query list();

  

  QBC :  QBCAPI提供了另一种方式 主要是Criteria接口 Criterion接口和Expression类

    

  Criteria criteria = session createCriteria(customer class);

  Criterion criterion = Expression like( name t% );

  Criterion criterion = Expression eq( age new Integer( ));

  Critera = criteria add(criterion ) ;

  Critera = criteria add(criterion ) ;

  list result = criteria list();

  

  或是 list result = session createCriteria(Customer class) add(Expression eq( this name tom )) list();

    

  SQL :  采用HQL和QBC检索时 Hib生成SQL语句适用所有数据库

    

  Query query  = session createSQLQuery( select c * from customers c where c name like : customername + and c age = :customerage c customer calss);

  query setString( customername tom );

  query setInteger( customerage );

  list result = query list();

  

  /////////////多态查询

    

  HQL session createQuery( from employee );

  QBC session createCriteria(employee class);

  HQL : session createQuery( from hourlyEmployee );

  QBC : session createCriteria(hourlyEmployee class);

  

  下面的HQL查询语句将检索出所有的持久化对象

  

  from java lang Object ;

  from java io serializable ;

  

  ////////////查询的排序

    

   查询结果按照客户姓名升序排列

  

  HQL

  Query query = session createQuery ( from customer c order by c name );

  QBC

  Criteria criteria = session createCriteria(customer class);

  criteria addOrder(order asc( name ));

  HQL :

  Query query = session createQuery ( from customer c order by c name asc c age desc );

  QBC :

  Criteria criteria = session createCriteria(customer class);

  criteria addOrder(order asc ( name ));

  criteria addOrder(order desc( age ));

    

  import net sf hibernate pression Order

  import mypack Order

  

  Criteria criteria = session createCritria (mypack Order class);

  criteria addOrder(net sf hibernate Order asc( name ));

  

  ///////////HQL语句的参数绑定Query接口提供了绑定各种Hib映射类型的方法

    

  setBinary()

  setString()

  setBoolean()

  setByte()

  setCalendar()

  setCharacter()

  setDate()

  setDouble()

  setText()

  setTime()

  setTimestamp()

  setEntity()//把参数与一个持久化类的事例绑定lsit result = session createQuery( from order o where o customer =            :customer ) setEntity( customer customer) list ;

  setParameter()//绑定任意类型的参数

  setProperties()//把命名参数与一个对象的属性值绑定 Query query = session createQuery( from customer c where c name =:     name + and c age =:age );

cha138/Article/program/Java/ky/201311/28916

相关参考