hibernate 全面学习【hibernate hsql语句学习 】

Hibernate hql

* 注意hql的大小写敏感性

1、实体对象的查询,查询的是实体对象的数据【重要】
  * n+1问题,在默认配置的情况下,使用query.iterate()操作,有可能有n+1问题,所谓
  n+1,指在查询对象数据的时候,发出了n+1条查询语句。
  1:首先发出了一条查询语句,查询对象的id列表
  n:在迭代访问每个对象的时候,如果缓存中没有对象数据,Hibernate会在此发出一条查询语句,
     查询相应的对象
 
  *List操作与Iterate操作的区别
   list,每次都会发出一条查询语句,查询所有的对象
   iterate,首先发出一条查询语句,查询对象的id列表,然后根据缓存情况,决定
    是否发出更多的查询语句,来查询对象数据
   参见:SimpleObjectQueryTest2.java
  
2、简单属性查询
  * 单个属性查询,返回的结果集属性的列表,其元素和属性的类型一致
  * 多个属性查询,返回的结果集是数组类型,数组的长度和查询的属性数量相关,数组中元素的类型与相应的属性类型相同
  参见:SimplePropertyQueryTest.java
 
3、条件查询【重要】                 
  * 可以拼字符串的形式传递参数
  * 可以用过?来传递参数(注意索引值是从0开始的,跟jdbc不同,jdbc是从1开始的)
  * 可以通过 :参数名 来传递参数(即命名参数方式)
  * 如果对应的参数值是多个,可以调用setParamterList()方法开传递
  * 在HQL中可以使用数据库的函数,如date_format()
  参见:SimpleConditionQueryTest.java

4、hibernate也支持直接使用原生sql进行查询
  参见:SqlQueryTest.java
 
5、外置的命名查询
  * 在映射文件中通过<query>标签定义hql
  * 在程序中使用session.getNameQuery()方法获得这个查询
  参见:Student.hbm.xml,NameQueryTest.java
 
6、查询过滤器
  * 定义过滤器参数
  * 在类映射文件中使用这些参数
  * 在session中启用过滤器
  参见:Student.hbm.xml,FilterQueryTest.java
 
7、对象导航查询,在HQL语句中,可以使用.的方式进行对象导航【重要】
   参见:ObjectNavQueryTest.java

8、连接查询(在对象里可以直接导航)【重要】
  * 内连接
  * 外连接(左连接/右连接)  
   参见:JionQueryTest
  
9、统计查询
  参见:StatQueryTest.java
 
10、分页查询【重要】
  * 通过query接口中的setFirstResult()和setMaxResults() 进行分页
  参见:PageQueryTest
 
11、DML风格的操作(尽量) 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值