Hibernate POJO 主键 三种状态

hibernate 
POJO = JavaBean  Object
PO = POJO + hbm 


瞬时态
持久态
游离态




POJO => PO
1:无参的构造方法
2:private私有属性,get/set方法访问
3:POJO类必须有一个和主键相对应的属性




Session的一级缓存
hibernate
OID
Student OID
缓存有2个相同的OID,会认为是同一个对象




get:直接持久化对象 ; 当查询不存在记录时,返回null
load:得到持久化对象的代理类,延迟加载,当查询不存在记录时,直接出错




主键:
自然主键 :有具体含义,有业务意义的,身份证ID,学号
代理主键:自增长主键,没有任何业务意义,就是一个自增长字段,企业中,选择这种


数据持久层


hibernate三种状态
瞬时态:没有和数据库关联,没有和session关联,new出来的对象,瞬时态对象的改变,不会影响数据库,数据库不会检测到对象内容改变,只是携带数据
持久态:当一旦通过save、update、saveOrupdate操作,变成持久态,和数据库、session都有关联,session一级缓存里会储存对象信息,保存,通过OID来标识每个对象,数据库会检测到对象内容的改变。
游离态(托管态):session清空,session关闭以后,对象变成游离态,游离态有OID的,不会和数据库、session保持关联,数据库也不会检测到对象内容的改变




Session一级缓存
Session 有很多集合在保存对象信息,只要不关闭,对象都在
save、update、saveorupdate、get  load  这些保存在Session缓存里,和数据库里
当下次需要读取这些对象时,直接从缓存里读,不会从数据库里读取




hibernate  OID 标识每个对象
save时,对象保存在缓存里
如果有两个一样的OID时,




saveOrUpdate:
对象状态是:瞬时态:采用save方法
对象游离态:采用update方法


持久态:直接返回


delete方法删除时,首先删除session一级缓存里,然后删除数据库里
update:如果更新OID在数据库里没有,会出错,首先先从数据库里get到,然后修改持久态对象进行更改




HQL:面向对象进行查询,

没有  select * 

Hibernate POJO 主键 三种状态

Hibernate POJO 主键 三种状态

Hibernate POJO 主键 三种状态

Hibernate POJO 主键 三种状态

Hibernate POJO 主键 三种状态

Hibernate POJO 主键 三种状态