Hibernate
定义 作用
配置数据源 (不是必须的)
创建项目 添加Hibernate 能力
主配置文件 工具类 (获取操作数据库对象的session) 添加hibernate 相关的jar文件
根据数据库中表生成持久化类以及对应的映射文件 由表到类
由类到表 手写持久化类 映射文件
自动
hbm2ddl.auto update 更新表结构 之前数据不会删除(最常用的属性,第一次加载 hibernate时根据model类会自动建立起表的结构(前提是先建立好数库),以后加载 hibernate时根据 model类自动更新表结构,即使表结 构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。))
create 每次重新建新的表
create -drop加载时创建新的表 当sessionFactory关闭删除这张表
validate 验证
手动
第一步 加载配置文件 create(true,true)
cascade 级联 查询 修改 删除 保存
save-update 保存对象时 同时保存相关联的对象
delete 级联删除 删除一个对象时 同时删除相关联的对象
all
delete-orphan 删除所有和本对象解除关系的对象
all-delete-orphan
inverse 放弃维护关系 true 不维护 false 维护关系
多对一 关系 学生相对于老师 员工相对于部门
多的一端 必须维护关系 少的一端 可以维护 通常都是不维护
部门 员工表
id生成策略
assigned 按照指定的字段 作为当前表的主键
uuid 产生的地球上唯一的id值 String类型 合并表
native 常用 Oracle 支持序列 MySQL 自增(依赖数据库的自增) 适应性高,不通过sql语句添加id 而是数据库自动添加
increment 自动增长的id 依赖程序维护的自增(在添加数据之前先执行查询语句,查询当前表中的最大id(select max(id) from 表名) 然后加一作为下一条数据的id值)
identity 依赖数据库的自增 不支持Oracle
hilo 使用高低位算法生成id
lazy 懒加载 查询某一个对象时。是否去同时查询相关联的实体对象取决于lazy true/false
Hibernate 使用懒加载可以降低系统内存的消耗 提高执行效率
只想知道某一个部门的名
fetch 抓取策略
select 查询对象的信息 会发送一条sql 查询语句
如果查询当前对象的关联对象或者实体 会再发送一条sql 查询语句查询
join left out join 左外连接
查询某一对象时 ,使用外连接同时查询与这个对象相关联的其他对象,此时懒加载失效
lazy
fetch select join
lazy 和 fetch 一起使用
lazy=true fetch=select 使用延迟加载 先查询要查询的对象,相关对象
不会查询
查询id为一的部门名称
关联关系 (双向关联)如何维护具有关联关系表的内容
从具有关联关系的某一个表都可以维护另外表的内容
多对一 一对多
学生-老师 多对一
第一种 多对一 (从两端都可以维护表的数据) 手动配置 --生成表
手写持久化类 Dept1 Emp1
写对应的映射文件 将映射文件关联到主配置文件
集合中只能存放对象
数据 int 123 Integer 对象 装箱
从集合中取数据 自动拆箱
具有双向关联关系的表可以从两端维护数据
单向关联
定义 作用
配置数据源 (不是必须的)
创建项目 添加Hibernate 能力
主配置文件 工具类 (获取操作数据库对象的session) 添加hibernate 相关的jar文件
根据数据库中表生成持久化类以及对应的映射文件 由表到类
由类到表 手写持久化类 映射文件
自动
hbm2ddl.auto update 更新表结构 之前数据不会删除(最常用的属性,第一次加载 hibernate时根据model类会自动建立起表的结构(前提是先建立好数库),以后加载 hibernate时根据 model类自动更新表结构,即使表结 构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。))
create 每次重新建新的表
create -drop加载时创建新的表 当sessionFactory关闭删除这张表
validate 验证
手动
第一步 加载配置文件 create(true,true)
cascade 级联 查询 修改 删除 保存
save-update 保存对象时 同时保存相关联的对象
delete 级联删除 删除一个对象时 同时删除相关联的对象
all
delete-orphan 删除所有和本对象解除关系的对象
all-delete-orphan
inverse 放弃维护关系 true 不维护 false 维护关系
多对一 关系 学生相对于老师 员工相对于部门
多的一端 必须维护关系 少的一端 可以维护 通常都是不维护
部门 员工表
id生成策略
assigned 按照指定的字段 作为当前表的主键
uuid 产生的地球上唯一的id值 String类型 合并表
native 常用 Oracle 支持序列 MySQL 自增(依赖数据库的自增) 适应性高,不通过sql语句添加id 而是数据库自动添加
increment 自动增长的id 依赖程序维护的自增(在添加数据之前先执行查询语句,查询当前表中的最大id(select max(id) from 表名) 然后加一作为下一条数据的id值)
identity 依赖数据库的自增 不支持Oracle
hilo 使用高低位算法生成id
lazy 懒加载 查询某一个对象时。是否去同时查询相关联的实体对象取决于lazy true/false
Hibernate 使用懒加载可以降低系统内存的消耗 提高执行效率
只想知道某一个部门的名
fetch 抓取策略
select 查询对象的信息 会发送一条sql 查询语句
如果查询当前对象的关联对象或者实体 会再发送一条sql 查询语句查询
join left out join 左外连接
查询某一对象时 ,使用外连接同时查询与这个对象相关联的其他对象,此时懒加载失效
lazy
fetch select join
lazy 和 fetch 一起使用
lazy=true fetch=select 使用延迟加载 先查询要查询的对象,相关对象
不会查询
查询id为一的部门名称
关联关系 (双向关联)如何维护具有关联关系表的内容
从具有关联关系的某一个表都可以维护另外表的内容
多对一 一对多
学生-老师 多对一
第一种 多对一 (从两端都可以维护表的数据) 手动配置 --生成表
手写持久化类 Dept1 Emp1
写对应的映射文件 将映射文件关联到主配置文件
集合中只能存放对象
数据 int 123 Integer 对象 装箱
从集合中取数据 自动拆箱
具有双向关联关系的表可以从两端维护数据
单向关联