代码之家  ›  专栏  ›  技术社区  ›  Kirill

实体管理器。Flush()是否将数据库中的数据保存为Commit()?

  •  4
  • Kirill  · 技术社区  · 7 年前

    entityManager.flush() 方法 持久() 提交() 方法。

    在期间自动执行 请求数据库,并在这一点上检查例如数据库的约束,以便持久化对象是否由于过程中的约束而错误 将引发异常。

    实际上,我想了解:

    1. 当你这么做的时候 提交() 刷新() ?

    2. 刷新() 而不是 ,可能在某些具体情况下?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Kirill    7 年前

    多亏了JB Nizet,现在关于 刷新() .

    以下是几点:

    1. 插入/更新/删除语句,然后提交此数据。 提交事务总是必要的。
    2. 刷新() 方法只执行insert/update/delete语句,而不提交数据,因此可以回滚事务和数据。
    3. 提交() JPA在提交之前刷新数据,即。 刷新()
    4. 刷新()
    5. 当在执行flush()后在READ\u提交的数据上设置的隔离级别在其他事务中不被视为 不提交数据。