保存和保存之间的差异春季数据jpa中的冲洗

2022-08-31 07:29:22

我正在尝试通过测试一些CRUD操作来学习弹簧数据JPA。JpaRepository

我遇到了两种方法和.我不明白这两者之间的区别。在调用时,我的更改也保存到数据库中,因此.savesaveAndFlushsavesaveAndFlush


答案 1

在 上,更改将立即在此命令中刷新到 DB。使用 ,这不一定是正确的,并且可能只保留在内存中,直到 发出 或 命令。saveAndFlushsaveflushcommit

但请注意,即使您刷新事务中的更改并且不提交它们,在此事务中提交之前,外部事务仍然看不到这些更改。

在你的情况下,你可能使用某种事务机制,如果一切顺利,它会为你发出命令。commit


答案 2

根据您正在使用的休眠刷新模式(这是默认设置),可能会也可能不会立即将更改写入数据库。调用时,您正在强制实施模型状态与数据库的同步。AUTOsavesaveAndFlush

如果您使用刷新模式 AUTO,并且您正在使用应用程序先保存,然后再次选择数据,则不会看到 和 之间的 bahvior 差异,因为选择首先触发刷新。请参阅文档save()saveAndFlush()


推荐