复习
day1
环境搭建
CRUD操作DB
6个核心的API
day2
TO PO DO 及其状态切换
OID 自然主键 代理主键(uuid)
一级缓存 Session绑定
load/get
关系
1对1
1对多(重点) 一set one-to-many 多many-to-one
对多对 两边都是set many-to-many
表结构 外键
对象 Set 对象
配置
级联操作 cascade 多
inverse true/false
--------------------------------------------
数据查询(数据检索)
OID数据查询方式
load/get 3个不同点
HQL数据查询方式
HQL语句 Query
QBC数据查询方式
Criteria
本地SQL查询方式
SQL语句 SQLQuery
OGN数据查询方式
获取到了对象后,就可以读取对象中所包含的对象的属性
对象名.对象名.属性
sm.teacher.teacherName
HQL数据查询方式
1.简单查询
select内容是按照数据库的顺序给定的,开发中字段
2.链式格式
3.查询结果的获取
查询数据总量:
多条数据
单一数据
查询结果
单一对象或者单一属性
多个属性或对象
4.别名
5.聚合函数使用
6.分页
7.条件查询
参数设定可以使用索引格式或者使用变量名格式
设置参数
setParameter(??,??)
setLong(??,??) setString(??,??)
setEntity(??,对象)
*对象必须是DO PO(具有OID)
8.投影
构造方法
List
Map
0 李若亮
1 Jock
0 张三丰
1 张真人
9.分组
group by 属性
10.排序
order by 属性
11.多态查询(不用)
OrderModel
Order1Model
Order2Model
如果当前模型在cfg.xml中注册了,包名可以省略不写
java.lang.Object
TeacherModel
12.配置格式的查询
1.在任意的hbm.xml文件中添加命名的查询HQL,query元素属于hibernate-mapping子元素,不是class的子元素
<query name="getAll">
<![CDATA[from TeacherModel where teacherName = :name]]>
</query>
2.Query对象获取
s.getNamedQuery(配置查询的名称"getAll")
3.其他内容同普通查询
以上操作均为单表查询
-----------------
以下操作为多表查询
多表查询,7种
交叉连接(笛卡尔积)
内连接
内连接
“from TeacherModel tm inner join tm.students s”
数据模型:主表数据 主表关联的数据
数据总量:关联数据总量
迫切内连接
“from TeacherModel tm inner join fetch tm.students s”
数据模型:主表数据
数据总量:关联数据总量
隐式内连接
“from TeacherModel”
数据模型:主表数据
数据总量:主表数据总量
外连接
左外连接
“from TeacherModel tm left outer join tm.students s ”
数据模型:主表数据 主表关联的数据
数据总量:从表被关联数据总量+主表未关联数据总量
迫切左外连接
“from TeacherModel tm left outer join fetch tm.students s ”
数据模型:主表数据
数据总量:从表被关联数据总量+主表未关联数据总量
右外连接
“from TeacherModel tm right out join tm.students s”
数据模型:主表数据 主表关联的数据
数据总量:从表数据总量
迫切连接与非迫切连接区别
0.获取的数据总量都相同
1.非迫切连接包含主和从
2.迫切连接只包含主