第三次课
Hibernate的关联映射
many-to-ont关联
one-to-many关联
many-to-many关联
配置文件两个核心关键字:
inverse控制反转,谁管理谁(控制权),如果为true表示由对方负责关联关系的添加和删除
为false表示由自己负责维护关联关系
cascade实现自动级联删除(先删子表后删父表),属性有all,none,save-updat(执行更新操作时级联),delete(删除时级联)
第四次课
Hibernate 的【检索策略】
立即检索策略
延迟检索策略
迫切左外链接检索策略
Hibernate的【检索方式】
1、【HQL】检索方式:
Query对象,写hql语句实现查询
hql语言与sql语言很相似,但最大的区别是sql操作数据库表和字段,hql操作实体类和属性
使用hql查询操作时候,使用Query对象
【步骤如下】:
(1)调用Session的createQuery()创建query对象
(2)动态绑定数据
(3)调用Query的list()方法执行查询语句
A、查询所有
(1)创建query对象
Query query = session.createQuery("from 实体类");
(2)调用方法得到结果
List<泛型实体类> list = query.list()
B、条件查询
(1)创建query对象
Query query = session.createQuery("from 实体类
where 实体类的属性 = ? and 实体类的属性 = ?
where 实体类的属性 like ? ");
(2)设置条件值,给?设值,从0开始【动态绑定参数】
第一个参数是int类型是?位置
//=查询
query.setParameter(0,1)
query.setParameter(1,“百度”)
//like的模糊查询
query.setParameter(0,‘“%周%”)
(3)调用方法得到结果
List<泛型实体类> list = query.list();
C、升序降序查询
Query query = session.createQuery(“from 实体类 order by 属性 ASC/DESC”);
List<泛型实体类> list = query.list();
E、分页查询【不能写limit,因为hql语句不认识limit
而是用query里面的两个方法实现分页】
(1) 查询所有再做分页
Query query = session.createQuery(“from 实体类”);
(2)设置分页数据,开始位置
query.setFirstResult(0);
设置每页显示的记录数
query.setMaxResults(3);
(3) List<泛型实体类> list = query.list();
2、【QBC】检索方式:
[使用Criteria对象和Expression类提供静态方法
不需要写语句了,使用方法实现
操作实体类和对象]
【步骤如下】:
(1)调用Session的createCriteria()创建criteria对象
(2)设定查询条件。Critearia的add()方法加入查询条件
(3)调用Critearia的list()方法执行查询语句
3、【本地SQL】检索方式
4、导航对象图检索方式
5、IOD检索方式
SQL多表查询
网友评论