在Spring数据jpa中save和saveAndFlush之间的区别
我正在尝试通过JpaRepository
testing一些CRUD操作来学习Spring数据JPA。
我遇到了两个方法save
和saveAndFlush
。 我不明白这两者之间的区别。 在调用save
也我的变化被保存到数据库,所以saveAndFlush
的使用是saveAndFlush
。
在saveAndFlush
,更改将立即在此命令中刷新到DB。 save
,这不一定是真实的,并可能留在内存中,直到flush
或commit
命令发出。
但是请注意,即使您刷新了事务中的更改并且不提交它们,直到在此事务中提交之前,这些更改仍然不会对外部事务可见。
在你的情况下,你可能使用某种事务机制,如果一切正常,它commit
为你发出commit
命令。
根据您使用的hibernate模式( AUTO
是默认设置),保存可能会或可能不会将您的更改直接写入数据库。 当您调用saveAndFlush时,您正在强制模型状态与数据库同步。
如果使用刷新模式AUTO,并且使用应用程序先保存,然后再次select数据,则不会在save()
和saveAndFlush()
之间看到bahvior的差异,因为select会首先触发flush。 见文件 。