Hibernate查询数据的五种方式


1.导航对象图查询:根据已经加载的对象,导航到其他对象。


例如,对于已经加载的Customer对象,调用它getOrders().iterator()方法就可以导航到所有关联的Order对象,假如在关联级别使用了延迟加载检索策略,那么首次执行此方法时,Hibernate会从数据库中加载关联的Order对象,否则就从缓存中取得Order对象。

2.OID方式:按照对象的OID来检索对象。


Session的get()和load()方法提供了这种功能。如果在应用程序中事先知道了OID,就可以使用这种检索对象的方式。

2.1.get与load比较

get()和load(),它们的用法完全一样,都需要两个参数,第1个是持久化对象类名.class,第2个是行号,也就是说这2个方法都只能返回固定的某一行的数据,但是需要注意的是:当输入的参数行号在数据库中不存在时,get()会返回一个空对象,不会报错,而load()会直接报错。

3.HQL检索方式:Hibernate Query Language(重要的、Hibernate强调的)


使用面向对象的HQL查询语言。Session的find()方法用于执行HQL查询语句。此外,Hibernate还提供了Query接口,它是Hibernate提供的专门的HQL查询接口,能够执行各种复杂的HQL查询语句。 
它具有以下功能: 
1)在查询语句中设定各种查询条件 
2)支持投影查询,即仅检索出对象的部分属性 
3)支持分页查询 
4)支持连接查询 
5)支持分组查询,允许使用having和group by关键字 
6)提供内置聚集函数,如sum()、min()和max() 
7)能够调用用户定义的SQL函数 
8)支持子查询,即嵌入式查询 
9)支持动态绑定参数 
例:Query query = session.createQuery(“from UserPO”);获得一个query对象,注意参数字符串中不是一个SQL语句,from后面跟的是持久化对象名字,List list = query.list();就可以获得数据库中对应表的数据集合

4.QBC检索方式:Query By Criteria的API来检索对象


这种API封装了基于字符串形式的查询语句,提供了更加面向对象的接口 
例:Criteria cr = session.createCriteria(UserPO.class);创建一个Criteria对象,参数是所关联的持久化对象,cr.add(Restrictions.ge(“id”, 2));将查询条件加入对象中,后面的操作就和query对象一样了。

5.本地SQL:SQL语句查询


使用本地数据库的SQL查询语句,Hibernate会负责把检索到的JDBC ResultSet结果集映射为持久化对象图。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值