Hibernate学习笔记(四)


我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改
以下是b站视频地址:
https://www.bilibili.com/video/av14626440

  Hibernate查询方式 1 对象导航查询 1)根据id来查询出某个客户,再查询这个客户里面的联系人 2 oid查询 1)根据id查询某一条记录,返回对象(利用session里面的get方法) 3 hql查询 1)Query对象,写hql语句  
*查询所有 : from  实体类名称
*条件查询:(支持别名)(注意:hibernate3.5版本后不支持'?'改为JPA规范 '?'+数字)                 “from  实体类名称 where 实体类属性名称 = ?0 and 实体类属性名称 = ?1”                 “from  实体类名称 as c  where c.实体类属性名称 = ?0 and  c.实体类属性名称 = ?1"                              " from  实体类名称 where 实体类属性名称 like ?0" 模糊查询:  
*排序查询:from 实体类名称 ORDER BY 实体类属性名称 ASC/DESC(升序/降序)
*分页查询: mysql中使用limit关键字进行分页,但是hql语句中并没有limit这个关键字,但是Query对象封装了两个方法来实现分页
*投影查询:查询部分字段的记录 1)select 实体类属性1 ,实体类属性2 from 实体类名称 2)select后面不能加*号,不支持
*聚集函数使用: 常用的聚集函数count,sum,avg,max,min 以count为例演示     注意:得到的object不能直接转化成int类型,要先转换为long类型在转换为int类型  
  4 qbc查询 1)cirtria对象(已过时) 5 本地sql查询 1)SQLQuey对象,使用sql进行查询       *HQL多表查询 mysql里面的多表查询 1)内连接查询(内链接查询出来的是两张表的关联数据) 2)左外连接(左外连接会显示左边表的所有数据和右边表的关联数据) 3)右外连接(右外连接会显示左边表的关联数据和右边表的说所有数据)     HQL实现多表查询 1)内连接 form Customer c inner join c.setLinkman 返回的list里面每部分是数组形式   2)迫切内连接(使用fetch关键字) 迫切内连接和内连接底层实现是一样的 区别:使用内连接返回的list里面是数组,而迫切内连接返回的list里面是对象 form Customer c inner join  fetch  c.setLinkMan   3)左外连接 from customer c left outer join c.setLinkMan   4)迫切左外连接 from customer c left outer join fetch c.setLinkMan   3)右外连接 from customer c right outer join c.setLinkMan   *hibernate 检索策略   .检索策略的概念 1 hibernate检索策略分为两类    1)立即查询:根据id查询,调用get方法,一调用get方法就马上发送语句来查询数据库    2)延迟查询:根据id查询,调用load方法,调用load方法不会马上发送语句查询数据库,只有得到对象里面的值的时候,才会去发送语句查询数据库   2 延迟查询分成两类 1)类级别的延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句 2)关联级别的延迟:查询出某个客户,在查询这个客户的联系人,就是查询客户的所有联系人的的过程是否需要延迟,这个过程就是关联级别的延迟     .关联级别延迟操作 1 在映射文件中进行配置来实现 1)根据客户得到所有的联系人,在客户映射文件中配置     2 在set属性中进行配置      1)fetch: 一般默认值 select      2)lazy:         -true :  延迟(默认)         -flase : 不延迟         -extra :极其延迟   *hibernate 批量抓取 1 要查询所有客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人         1)完成上面需求,会发送多条sql语句,造成效率低下         2)hibernate提供了批量抓取的方式来提高效率 2 在客户的映射文件中进行set标签配置batch-size,值越大发送的语句越少,和你的数据量有关