Hibernate 的 Session 的刷新点 和同步点

刷新点,同步点 ,说实话,这两个概念命名其实不准确,  这两个点的本质其实就是 与数据库的交互。

了解下面内容前,我们先提一下要注意的点: 一个是 向数据库发出操作SQL,一个是 事务的 commit,两个阶段是分离的。

刷新点:

       hibernate在执行到  insert、update、delete 等一些操作时,不会立即向数据库发出操作SQL,而是积累后续一些操作后,做一些整合优化后,再一次向数据库发出操作SQL。

而向 向数据库发出 insert、update、delete(注意,不包括select) 操作SQL 的 时机,就是 刷新点。

啥时候会触发刷新点呢?

  1、执行Query查询

                这个好理解,你在select 时,如果不把前面进行的 insert、update、delete 的语句往数据库发,查询的结果会正确吗?

                当然这还需要看hibernate的FlushMode的设置情况。

                如果FlushMode是设置成 COMMIT 或 MANUAL, select时也并不会向数据库发出DML语句。

                FlushMode 具体详见  Hibernate 处理 大数据量的只读数据。

  2、session.fulsh()操作   这个是人为要求刷新,要求把前面还没发给数据库的操作 发给数据库。

  3、执行事务的提交        这个是事务要提交了,前面还没发给数据库的操作 当然要马上发了。

 

同步点:

      说白了,就是事务提交...

 

所以,这两个概念真心没必要存在...一个是hibernate在认为合适的时候往数据库发DML请求,一个就是事务提交。

posted on 2018-03-05 10:29  HB1  阅读(310)  评论(0)    收藏  举报

导航