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

default@Transactional如何在低级别工作?

  •  1
  • Whimusical  · 技术社区  · 7 年前

    传播所需的default@Transactional是否收集所有查询并在方法末尾执行它们,还是打开一个db事务并执行BEGIN,在找到每个查询时执行BEGIN,在事务完成时执行COMMIT?

    这就是所谓的逻辑与物理事务吗?

    我想知道,因为我使用的@Transactional tests执行GET endpoint+DELETE endpoont+GET endpoint,READ\u未受限制,所以行为能够很好地工作,但是我在日志中没有看到DELETE查询的痕迹,只有selects。

    我本以为我会看到所有发出的查询,然后回滚,但我感觉事务只是在修改持久性上下文的托管实体,并试图在测试结束时保存。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Adrián Paredes    7 年前

    也许这个答案可以帮助你: JPA flush vs commit

    如果有活动事务,JPA/Hibernate将在事务提交时执行flush方法。同时,应用于实体的所有更改都收集在 Unit of Work .

    您可以通过更改刷新策略来更改此行为。