一级缓存:session级别的缓存
-
当获得一次会话(session),hibernate在session中创建多个集合(map),用于存放操作数据(PO对象),为程序优化服务,如果之后需要相应的数据,hibernate优先从session缓存中获取,如果有就使用;如果没有再查询数据库。当session关闭时,一级缓存销毁。
-
强制刷新,让一级缓存的数据与数据库一至 session.flush();
一级缓存快照
-
快照:与一级缓存存放位置是一样,对一级缓存数据备份。保证数据库的数据与 一级缓存的数据必须一致。如果一级缓存修改了,在执行commit提交时,将自动刷新一级缓存,执行update语句,将一级缓存的数据更新到数据库。
一级缓存注意:
- HQL会对数据进行session缓存
- SQL不会对数据进行session缓存
- Criteria会对数据进行一级缓存