hibernate缓存,四种状态

FlushMode.AUTO:Hibernate判断对象属性有没有改变,是默认的清理模式

FlushMode.COMMIT:在事务结束之前清理Session的缓存,其他任何时候都不清理缓存

FlushMode.NEVER:除非强制调用Session.flush(),或则永不清理缓存。所作的修改只限与内存

FlushMode.ALWAYS:在每一个查询语句前都调用flush()进行缓存管理,这种模式经常不必要并且低效的。

 

1.瞬时状态
也就是实体对象处于new的状态
它是在session缓存区中不存在的,也不会跟session有关联
更不会跟数据库有关联
2.持久状态
持久状态是最重要的。、
当你用save(),load(),get(),update(),
list,iterater,scroll,saveOrUpdate方法时,
都会编程持久状态,会把对象放在session缓存区中
当session进行缓存区清理的时候,也就是commit的时候
会把数据与数据库进行同步。

3.移除状态
用remove(),delete就会从持久状态变成移除状态
移除状态的对象还是存在缓存区中的,只是数据库中不在有
此对象,不在和它关联
一旦session关闭,这个对象也就没有意义了

4.游离状态
当session关闭后,存在session缓存区中的对象就变成了游离状态
。他们还是可以访问各自的数据,但是他们不在和数据库关联起来,
他们只是曾经与session有过一段绯闻,而最后被抛弃的东西,
而他们拥有对象标识符

你可能感兴趣的:(hibernate缓存,四种状态)