辰宇落彦 2018-07-10 09:11 采纳率: 100%
浏览 41822
已采纳

jpa自带的save,flush和saveandflush区别

各位大神:
save、flush和saveandflush似乎都能在数据库中更新数据,具体有什么区别,各自在什么情况下用呢

  • 写回答

4条回答 默认 最新

  • 冥牙 2018-12-04 04:06
    关注

    一般来说需要手动flush的情况不多,设置AUTO时,jpa会自己决定什么时候flush。比如在更新数据之后,再使用jpa查询语句时,数据库就会在查询之前先flush一下,从而保证查询数据的正确性.下面这个例子是需要使用flush的情况:
    https://stackoverflow.com/questions/32108491/what-is-exact-purpose-of-flush-in-jpa

    引用链接里的例子,
    1.Read a person Person p = em.find(Person.class, 234)
    2.Update person p.setAge(31)
    3.Read a building Building b = em.find(Building.class, 123
    4.Read a building with JPQL query select b from Building b where b.id = 123

    执行步骤2后,数据库中的对应的age并没有立刻变成31,只有在flush之后才会自动变成31(当然也可以在加上save(p)去更新数据库,其实这一步不需要)
    通常在4之前需要flush,跟新下数据库里的age。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?