1.java持久化概述
Java持久化简称(JPA), 即把程序中的临时数据持久保存到数据库中。由于jdbc开发效率低,我们就提出了对象关系映射(ORM)的概率
2.ORM
通过java持久化提供的API来讲java的实体对象保存到数据库中。
3.Hibernate
Hibernate的核心就是基于ORM的设计思想,对于Hibernate来说,一个java类就是数据库中的一张表,java类中的一个属性就是表中的一个字段,一个java类的实例就是一条数据
4.Hibernate框架搭建
a.新建java项目
b.添加hibernate相关jar到项目lib目录中
c.新建java实体类和对于的数据库表
d.创建实体类相关*.hbm.xml映射文件
e.hibernate的配置文件hibernate.cfg.xml放在src下
f.测试
5.Hibernate的增删查改
增save()
删除delete()
改 update()
查询 get(),load()
6.get()和load()的区别
见案例
7.lazy属性 懒加载/延迟加载
用到时才加载
lazy="true"
8.Hibernate的对象状态
1.瞬时状态、临时状态
只能new出来的对象
不处于session的缓冲中(session不管理)
对象在数据库中没有对应的记录
只要主键在数据库中存在,就说这个对象在数据库中有对应的记录
2.持久化状态
1.处于session的管理范围
当执行session的方式(save/update/saveOrUpdate/get/load)时,这个对象就会自动转成持久状态
2.在数据库中有对应的记录
3.处于游离状态的对象,当对象属性进行更改的时间,提交事物更改会反映到数据中。
3.游离状态
1.对象不处于session管理范围,通常指session关闭后的对象状态
2.对象在数据库中有对应的数据
9.hibernate 一级缓存(也叫session缓存)
当执行session的相关方法时,入save,update,get,load等方法时,对象会自定放入一级缓存中,当session关闭缓存就会消失。
特点:
- 缓存有效范围,只在当前session范围,缓存时间很短,作用范围小
- 一级缓存,可以在短时间内多次操作数据库的时候,提升效率,减少对数据库的访问次数
- 在提交事物时,hibernate会同步缓存到数据库中,会对比缓存数据和数据库数据是否一致,如果一致不修改数据库,不一致提交到数据库执行update语句。
session.clear();清空缓存
session.evict(user1);清除指定缓存
10.实体关系(表与表的关系)
多对一 学生 对 班级
一对多 班级 对 学生
双向一对多
多对多 学生 对 老师
一对一 用户 对 身份证
11.控制反转
inverse="true" :控制反转,把主导权给另一方 就会失去外键维护的权利