Hibernate知识点总结
第一章
持久化及ORM
Hibernate基本原理
一个开发源代码的对象关系映射框架
对JDBC进行了非常轻量级的对象封装,简化了JDBC 繁琐的编码
将JavaBean对象和数据库的表建立对应关系
搭建项目框架,编写hibernate配置文件,映射文件使用hibernate完成增删改查操作
1、读取并解析配置文件
2、读取并解析映射信息,创建SessionFactory
3、打开Session
4、开始一个事务(增删改操作必须,查询操作可选)
5、数据库操作
6、提交事务(回滚事务)
7、关闭session
实体对象的三种状态
瞬时状态、持久状态、游离状态
Hibernate开发步骤:
1、准备对象
2、设置关系
3、持久化操作
Session绑定线程
第二章
类与类之间的关系
关联、泛化、聚集、聚合
Many-to-one关联
One-to-many关联
双向一对多关联
One-to-many和many-to-one的组合
Many-to-many关联
column="r_emp_id" /> column="r_proj_id" /> 数据库中的表分为3种:实体表、关系表、字典表 Cascade和inverse Casecade:级联,一得一方进行的操作会影响到多的一方,即主控方进行什么操作受控方就进行什么操作 Inverse:反转控制、放弃控制权,即inverse=”false”的一方有维护关系的权利,inverse=”true”的一方放弃维护关系的权利 第三章 HQL的优点: 1、语句简单 2、无需封装 3、独立于数据库 使用HQL的步骤 1、得到session 2、编写HQL语句 3、创建Query对象 4、执行查询并得到返回结果 HQL属性查询 得到的list中存的是Object数组 参数绑定 1、占位符“?“ 设置值时,下标从0开始 2、命名参数 :name作为参数 3、封装参数 一、创建查询对象 二、动态设置查询语言(拼接HQL语句) 三、使用setproperties()设定参数 HQL分页查询 setFirstResult((pageNo-1)*pageSize)设置首条记录的位置 setMaxResult(pageSize)设置每页最大显示数 HQL排序查询 HQL 常用聚合函数 count( ):统计函数 max( )和min( ):最大值和最小值函数 avg( )和sum( ):平均值和求和函数 与SQL类似,HQL 通过order by 子句实现对查询结果的排序默认情况下按升序顺序排序 排序策略(asc 升序、desc 降序 HQL分组查询 通过group by 子句实现 并使用having 子句对group by 返回的结果集进行筛选 第四章 如何对Hibernate进行性能优化 1、数据库设计 2、HQL优化 一、避免使用or操作 二、避免使用not 三、避免使用like(可以用标签) 四、避免having子句 五、避免使用distinct 3、数据加载策略 即时加载、延迟加载 关联对象、关联集合、实体对象默认延迟加载 属性默认即时加载 Hibernate的默认配置适合于大多数情况 Get()方法不受延时加载的限制 Load()方法受延迟加载的影响 4、缓存管理 分为一级缓存和二级缓存 一级缓存时hibernate管理的 二级缓存需要手动配置 List和iterate的区别 List()每次只发出一条查询语句,并把查询结果存入session Iterate()先查询满足条件的id然后去缓存中查询,差异的部分到数据库中查询 联接查询和联接迫切(fetch)查询 普通联接查询返回的list中存的是object数组,object数组中的对象从左往右依次对应迫切查询返回的list中存储的是最左边的对象(边查询边封装) 第五章 Criteria查询 Criteria 查询采用面向对象方式封装查询条件,又称为对象查询 对SQL 语句进行封装 采用对象的方式来组合各种查询条件 由Hibernate 自动产生SQL 查询语句 Criteria由Hibernate Session进行创建 Example查询适用于多条件等值查询 常用限定查询方法 使用Criteria进行查询排序 addOrder(Order.desc(“colum”)) 使用Criteria进行查询分页 setFirstResult((pageNo-1)*pageSize)设置首条记录的位置setMaxResult(pageSize)设置每页最大显示数