hibernate实体的三个状态
1,瞬时状态:和数据库没有关系,实体只存在于内存中
2,持久状态:实体在内存中存在,数据库中也存在(特点:内存和数据库中同步)
3,游离状态:在内存中存在,在数据库中可能存在
持久化状态内部实现解剖:
一;首先归功于hibernate的缓存:
1它默认支持一级缓存,一级缓存是session级别
2可插拨式的缓存,二级缓存是sessionFactory级别的缓存
二:首先在执行添加add方法之前,定义user身份为A,在add方法执行时会把A放到DB数据库中同时user为A的身份也会放到一级缓存中去,(一级缓存为session,事务未关闭前都会存在)。然后重新定义user定义为身份B。此时缓存中的user也变成B。执行事务提交之前由于缓存要和数据库同步的特点。所以提交事务时会发送一个update语句把数据库中的A变成B。故在提交事务之前,一切都是缓存的内容被更改,先不会操作数据库。