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:在indentiysequence2种策略直接自行切换

assigned:hibernat放弃管理主键,需要手动设置主键

一级缓存


hibernate提供了一级缓存,二级缓存。

一级缓存自动配置,二级需要手动配置

一级缓存是session级别的缓存,和session的声明周期一致。

一级缓存特殊区域:快照区

当要提交事务的时候,一级缓存会和快照区对比一下是否一致,如果不一致自动提交数据更新数据,一致的话不会更新数据。

事务

指逻辑上的一组操作,组成这个逻辑的单元要么全部成功,要么全部失败

特性:

原子性:事务不可再分割

一致性:事务完成前后,数据保持一致

隔离性:事务在执行过程中,不应该受到其他事务的干扰

持久性:事务执行完成后,数据就持久到数据库中。

原文地址:https://www.cnblogs.com/wangrongchen/p/11437467.html