四种:临时态(瞬时态丶新建态)、持久态、游离态、删除态
瞬时态:对象刚刚创建,对象的数据在表中还没有保存,并且对象也没有在session的缓存中持久态:对象的数据已经在表中保存了,并且这个对象也在session的缓存中保存游离态:对象的数据在表中存在,但是对象不在session缓存中保存(session被关闭)删除态:session调用delete方法对对象进行操作之后实际上对象的状态和session的方法调用是有关的,主要是要知道的是用什么方法可以将一个状态改为另一个什么状态evict()方法的作用是从session缓存中将指定的对象删除
clear()方法的作用是将session缓存中所有对象删除
hibernate中的缓存分为两级:一级缓存和二级缓存
一级缓存:session中的缓存
二级缓存:工厂缓存
session中除了一级缓存之外还多了一个快照区.
快照区存在的意义是:
当查询到的对象数据,调用set方法进行数据修改时,如果set方法的调用没有实质性的修改原数据,那么即使session调用update方法想实现update更新操作,但是一级缓存和快照区进行当前对象的对比,发现数据完全相同,因此不会发送update语句;
只有set方法调用数据发生实质性的改变,session调用update方法更新数据时,一级缓存和快照区对比当前对象数据,发现不同,才发送update语句。