java flush是什么意思,java – JPA中flush的确切目的是什么

从理论上讲,你(作为JPA的用户)不应该(或者在绝对罕见的情况下)进入调用flush()的情况.

Flushing is the process of synchronizing the underlying persistent

store with persistable state held in memory

换句话说,在flush()上,所有插入,更新,删除或在数据库上实际调用的任何语句,在flush()之前没有任何事情发生在您的数据库上.刷新是由提交事务或某些类型的数据库读取引起的.例如,如果执行JPQL查询,则必须执行flush()以从数据库中获取正确的结果.但是,通过JPA实现了解并完全处理这一点非常好.

在某些情况下,您可能希望自己控制此刷新,然后可以使用flush()调用它.

编辑以回答评论中的问题:

不是每次读取都需要刷新,请考虑这种情况(一个事务):

>读一个人Person p = em.find(Person.class,234)

>更新人物p.setAge(31)

>阅读建筑物B = em.find(Building.class,123

>从建筑物b中读取带有JPQL查询的建筑物b,其中b.id = 123

自动刷新仅在4之前发生,因为Eclipselink无法确定您要读取的内容,因此在读取之前,此人的年龄必须是最新的. 3.之前没有需要刷新,因为Eclipselink知道一个人的更新不会影响建筑物.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值