我们借助于Session来操作数据库,Session是有缓存的(在hibernate中称为一级缓存),当我们调用session.save()或者update()等的方法的时候,hibernate并不一定会马上将修改同步到数据库,而是先将这些信息存储在session缓存中,由hibernate自己在合适的时候将缓存中的数据,同步刷新到数据库中。正是由于hibernate的这种缓存机制,在同一个session中多次修改一个记录,最终只会向数据库发出一条update语句。由于session缓存以及脏数据检查机制,能够帮助我们尽可能少地发出SQL语句。
hibernate提供了FlushMode接口,能够让我们干预hibernate将脏数据同步到数据库的时机。Session.flush()会触发hibernate将数据同步到数据库。可以通过session.setFlushMode()来修改刷新模式。FlushMode提供了4种缓存模式:MANUAL、COMMIT、AUTO和ALWAYS。
MANUAL:我们必须在代码中手动调用session.fl