HIbernate第三-四次课

第三次课

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()方法执行查询语句


HIbernate第三-四次课_第1张图片
查询所有
HIbernate第三-四次课_第2张图片
条件查询
HIbernate第三-四次课_第3张图片
排序查询
HIbernate第三-四次课_第4张图片
分页查询

3、【本地SQL】检索方式

4、导航对象图检索方式

5、IOD检索方式


SQL多表查询

你可能感兴趣的:(HIbernate第三-四次课)