Hibernate学习(二)持久化类,主键生成策略、一级缓存、事务
持久化类:
持久化:将内存中的一个对象持久化到数据库中的过程。hibernate是持久层的ORM框架
持久化类:java中的一个对象和数据库表建立了映射关系,就可以称为持久化类,java类+映射文件。
持久化类的3种状态
1、瞬时态
这种对象没有标识OID,没有session管理
2、持久态
有标识OID,有session管理
3、托管态
有标识OID,没有被session管理
主键的分类
1、自然主键
主键本身就是表中一个字段。例如:一个人员表,可以用身份证来做主键,这种称为自然主键。
2、代理主键
主键不是表中必须得主键,例如:一个人员表,用uuid来做主键,不用身份证号做主键,用一个和这个表没有关系的字段,这种称为代理主键。
在实际开发中,尽量使用代理主键
主键生成策略
increment:hibernate提供的自动增长机制,适用shot,int,long类型做主键,适合单线程
identity:适用shot,int,long类型做主键,使用关系型数据库自动增长机制,例如myslq,不适用oracle
sequence:适用shot,int,long类型做主键,采用序列方式,支持oracle
uuid:使用字符串主键,hibernate自动生成随机主键
native:在indentiy和sequence2种策略直接自行切换
assigned:hibernat放弃管理主键,需要手动设置主键
一级缓存
hibernate提供了一级缓存,二级缓存。
一级缓存自动配置,二级需要手动配置
一级缓存是session级别的缓存,和session的声明周期一致。
一级缓存特殊区域:快照区
当要提交事务的时候,一级缓存会和快照区对比一下是否一致,如果不一致自动提交数据更新数据,一致的话不会更新数据。
事务
指逻辑上的一组操作,组成这个逻辑的单元要么全部成功,要么全部失败
特性:
原子性:事务不可再分割
一致性:事务完成前后,数据保持一致
隔离性:事务在执行过程中,不应该受到其他事务的干扰
持久性:事务执行完成后,数据就持久到数据库中。