save
当instert时,会立即执行sql(但在commit之前仍然看不到数据)。 其他事务无法update同一行,即使set相同id,最后会以id+1的结果insert一条数据。可能跟事务的隔离级别有关。
当update时,不会立即执行sql,console不会打印sql。 其他事务可以update同一行数据。
saveAndFlush
当update时
当想要update数据时候,数据库会加上行锁。 其他事务会卡住无法及时commit。
自定义的update语句
会立即执行sql。不需要flush

本文探讨了数据库事务在插入和更新操作时的行为差异。在insert时,操作会立即执行但数据在commit前不可见,可能导致其他事务无法更新同一行。update操作则不会立即执行sql,可能引起其他事务同时更新同一行,导致锁定。使用saveAndFlush在update时会加行锁,影响并发性能。自定义的update语句则会立即执行并避免锁竞争。
2258

被折叠的 条评论
为什么被折叠?



