1 什么是框架
(1) 框架可以理解成一个半成品项目,他封装了一些功能,我们需要掌握的如何驾驭这个功能,不需要操心它是怎么实现的。其实他就是按照我们之前所学的内容实现的。
(2) 为什么要使用框架?框架可以提高开发效率。
2 Hibernate框架
Hibernate是dao层的框架,完成的功能是对数据库进行crud(增加(Create)、读取查询(Retrieve)、更新修改(Update)和删除(Delete))
Hibernate是一个ORM(ObjectRelational Mapping)框架。
对象关系映射。
Hibernate是以面向对象的方式进行数据库的增删改查,甚至不应写sql语句。
Hibernate项目搭建
1、(1)解压
(2)打开lib
(3)打开require文件夹,导入里面所有的包
(4)还需要导入一个之外的数据库的包
2、建立实体bean类
新建user类
(1) 所有的属性应该设置为private并且附加get和set方法
(2) 构造函数。没写可以,如果要写,至少写两个(必须包含一个空的构造函数)
(3) 字段名设置成包装类。
比如小明考试,为0分,和缺考是有区别的。如果使用基本类型则无法表示,但是使用包装类型则可以设置为null
(4)实体类里面必须有一个id(主键)
3、建立数据库对应的表
可以省略,hibernate可以帮助我们自动根据实体类生成数据表
4、建立映射关系
第一步: 建立一个配置文件,命名和位置都没有强硬的规范,一般情况下规定,把这个文件放到对应的bean目录下,命名规范为实体类名+ .hbm + .xml
第二步: 导入约束文件,声明这个文件是hibernate配置文件,导入之后书写配置的时候会有提示信息。
第三步: 配置信息
5、配置hibernate核心配置文件
第一步: 创建核心配置文件,文件的命名和位置都必须按照规定来,文件放在src目录下,文件名为hibernate.cfg.xml
第二步: 导入约束文件
第三步: 配置信息
6、书写测试代码dao层代码
Hibernate配置详解
设置hibernate执行sql语句的时候,自动显示在控制台上

<!--主键生成策略-->
<!--代理主键和自然主键
主键生成策略:
identity 是由于数据库自己维护 自动上涨
increment 是由于数据库自己维护 查找最大的id 然后在之后的位置上插入
hilo(了解)
native(我们用的 代表上面三个)
uuid(java api的生成策略)
assigned(自然主键)
-->
<generator class="native"></generator>
<!--其他的属性 这里也可以设置数据库中字段的属性 type 生成表中的类型 length 长度 not-null 不为空 --> <name="name" column="name"length=""></property>
<!--其他的属性
这里也可以设置数据库中字段的属性
type 生成表中的类型
length 长度
not-null 不为空
-->
<property name="name" column="name"length=""></property>
Hibernate crud
Saveupdate get delete
这四个方法不能单纯的理解为添加修改 查找 删除
实际是修改hibernate中的对象状态
在hibernate中对象有三种状态
1、瞬时状态 一个实体对象 没有id 也没有和session绑定
2、游离状态 有id 没有和session绑定
3、持久状态 有id 也有和session绑定
实际上session的四个方法,就是在改变实体对象在hibernate中的对象状态

持久化对象的特点:任何对象的变化都会自动同步到数据库中。
Hibernate提供了一个saveOrUpdate的方法,这个方法自动识别对象的状态,
实际开发中不去思考对象的实际状态,直接调用该方法。
Hibernate查询方式
1 HQL
基础查询
条件查询:建议使用字符串的占位符方式
分页查询:setFirstResult第几个开始setMaxResults查找几个
最大的特点是封装了sql语句,在查找时用的是类名和类的属性名。
2 certeria
这种语法连hql语句都不用写,在查询的时候全部调用他封装好的方法。
And()并且
or() 或者 equal() 等于 notEqual 不等于 like() 模糊查询 isnull() 为空 in():等于列表中的某一个值(特别注意,使用特别) gt(): 大于 ge(): 大于等于 lt(): 小于 le(): 小于等于
between()
3 sql
NativeQuery