Flush()后只是将Hibernate缓存中的数据提交到数据库,如果这时数据库处在一个事物当中,则数据库将这些SQL语句缓存起来,当Hibernate进行commit时,会告诉数据库,你可以真正提交了,这时数据才会永久保存下来,也就是被持久化了.
commit()方法会先调用flush()方法,然后提交事务.提交事务意味着对数据库所做的更新会永久保持下来
commit针对事物的
flush针对缓存的
同步到数据库中后只要没有commit还是可以rollback的。
有三种对象
1, 游离对象
2, 持久化对象
3, 临时对象
提交之前是临时对象,然后提交以后变成持久化对象,evict清除的是持久化对象在缓存中,如果你还没有保存的话,还是一个临时对象,当然清除不了了啊