一、对象状态
1、状态介绍
hibernate有三种状态:瞬时态、持久态、脱管态
瞬时态:session没有缓存对象,数据库也没有对应的记录
持久态:session缓存对象,数据库最终会有记录(事务还没提交)
脱管态:session没有缓存对象,数据库有记录
|
Session |
ID |
瞬时态 |
|
|
持久态 |
√ |
√ |
脱管态 |
|
√ |
2、转换
二、一级缓存和快照
- 一级缓存:又称为session级别的缓存。当获得一次会话(session),hibernate在session中创建多个集合(map),用于存放操作数据(PO对象),为程序优化服务,如果之后需要相应的数据,hibernate优先从session缓存中获取,如果有就使用;如果没有再查询数据库。当session关闭时,一级缓存销毁。
- 快照:与一级缓存一样的存放位置,对一级缓存数据备份。保证数据库的数据与 一级缓存的数据必须一致。如果一级缓存修改了,在执行commit提交时,将自动刷新一级缓存,执行update语句,将一级缓存的数据更新到数据库。
save:
get:
evict: