很多人知道hibernate一级缓存,却不知道什么是快照。。。。
快照-----是内存中数据的一个副本,当刷新缓存时,会与快照中的数据相对比,发现不一致,就会发出update语句,更新数据库。
下图引用于网络(分析的比较清晰)
1. 当一级缓存和快照不一致的时候,会先发出update语句,将一级缓存同步到数据库(发出update语句),然后当同步成功之后,再自动内部同步快照。保证三者的一致性。
2. 如果是Oracle数据库,开启事务后,当手动flush后,不手动commit,Hibernate自动commit;
如果是Mysql数据库,开启事务后,当手动flush后,不手动commit,Hibernate不会自动commit;