我是从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,值越大发送的语句越少,和你的数据量有关
 
 
 
 

Hibernate学习笔记(四)的更多相关文章

  1. Hibernate学习笔记四 查询

    HQL语法 1.基本语法 String hql = " from com.yyb.domain.Customer ";//完整写法 String hql2 = " fro ...

  2. Hibernate学习笔记四:事务管理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6768298.html  一:需要事务的Session操作 Session操作中,查询类操作是不需要事务就能生效 ...

  3. Hibernate学习笔记四

    1 整合log4j(了解) l slf4j 核心jar  : slf4j-api-1.6.1.jar .slf4j是日志框架,将其他优秀的日志第三方进行整合. l 整合导入jar包 log4j 核心包 ...

  4. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  5. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  6. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  7. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  8. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  9. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  10. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

随机推荐

  1. 给Sublime Text3 设置自定义快捷键

    Preferrences -> Key Bindings-User打开用户自定义快捷键文件,添加以下代码,保存. [ { "keys": ["ctrl+shift+ ...

  2. 2015Java参赛邀请函

    [导读]甲骨文公司值Java语言发布20周年之际,携手全国高等级学校计算机教育研究会.教育部高等学校计算机类专业教学指导委员会,共同举办了2015年“甲骨文杯”全国Java程序设计大赛,为二百万名中国 ...

  3. Vue 几种常见开局方式

    vue的开局方式五花八门,这里列几种常见的. 我们先建立一个app.vue来当入口文件,即所有页面都会以这个组件为模板. <template> <div id="app&q ...

  4. PHP06 流程控制

    学习要点 选择结构 循环结构 学习目标 掌握PHP的选择结构 掌握PHP的循环结构 流程控制概述 程序 程序:一系列计算机指令的集合. 编程语言:开发程序的工具. 程序执行结构 计算机程序有三种基本执 ...

  5. java内存模型(线程共享部分)

    1.元空间(MetaSpace)与永久代(PermGen)的区别? ----> 1.1 元空间使用的是本机内存(这样的好处是,可以使用的内存空间变大了,没有OutOfMemoryError:Pe ...

  6. Shell数值比较

    Shell数值比较 比较 描述 n1 -eq n2 检查n1是否与n2相等 n1 -ge n2 检查n1是否大于或等于n2 n1 -gt n2 检查n1是否大于n2 n1 -le n2 检查n1是否小 ...

  7. 整理几个牛人博客以及OJ

    Blogs 陈立杰(wjmzbmr):http://wjmzbmr.com/ 飘过的小牛:http://blog.csdn.net/niushuai666 王垠:http://www.yinwang. ...

  8. [POJ] 1191 [LUOGU] P1436 棋盘分割

    那个均方差,可以通过展开.合并Σ,发现最终只有Xi^2会对答案造成影响,其他都是定值,所以求出最小的和的平方就行. 其实这才是这题最难的部分,以下都是码农部分. f[x1][y1][x2][y2][k ...

  9. svn上传项目

    1.桌面右键单击 2.进行项目导入 3.选择项目所在目录 4.

  10. Java自动生成asmx的webservice代码

    第一种方式:针对CXF自动生成的代码对响应类大小写区别问题,可以使用此方法. 工具为Eclipse. 新建Web Service Client. 输入地址点击finish即可自动生成. 调用方式: p ...