gpt4 book ai didi

java - 在调用查询此持久化实体的另一个线程之前,如何确保实体已持久化?

转载 作者:行者123 更新时间:2023-12-01 04:29:09 25 4
gpt4 key购买 nike

我的 Java Web 应用程序(Spring + JPA)中出现以下情况:

  1. 我有将实体保存到数据库的方法
  2. 在持久化实体之后,我立即调用 notify() 来唤醒另一个线程。
  3. 第二个线程正在处理我刚刚保留的实体。

所以结果我有:第二个线程查询一个新的持久实体,但它还不存在。因此,第二个线程向数据库发送查询的速度比主线程持久化它的速度更快。如果我添加一些超时,它就可以完美工作。但这对我来说不是一个合适的解决方案。我想我可以使用 contains() 方法检查实体管理器。但我不确定它的效率如何。我对这个主题还很陌生,所以我很高兴听到您的建议。

附:我使用的是Spring框架,因此持久化和通知发生在一个事务中(用@Transactional注释标记)。第二个线程没有任何 @Transactional 类。

谢谢,艾米丽。

最佳答案

尝试使用实体监听器在实体被持久化时收到通知。您可以在 JPA Wiki Book 中阅读有关实体监听器的信息。 ,Hibernate documentation并在 www.objectdb.com .

关于java - 在调用查询此持久化实体的另一个线程之前,如何确保实体已持久化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com