hibernate缓存,四种状态

mac2024-12-23  43

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有过一段绯闻,而最后被抛弃的东西, 而他们拥有对象标识符

最新回复(0)