提交整个事务后,休眠是否刷新



>我有两个应用程序第一个应用程序将在while循环中持久化到数据库中,循环将在很长时间后(例如10-15分钟)结束。但是第二个应用程序需要第一个应用程序已经持久化在数据库中的数据,第二个应用程序不能等待第一个应用程序完成。它将在第一个应用程序开始运行后立即启动。我在第一个应用程序中使用了 EntityManager.flush(),希望第一个应用程序能够立即将数据与数据库同步。这样,位于不同事务中的第二个应用程序就可以开始处理数据。

这是行不通的,flush()方法的目的是什么,我该如何解决我的问题?请帮忙!!

flush()将所有

挂起的更改写入数据库。它执行插入、更新和删除语句。默认情况下,它在提交事务之前自动调用。

但仅仅因为您刷新并不意味着其他交易会看到这些变化。这取决于事务隔离级别,在大多数数据库中,事务隔离级别是READ_COMMITTED。事务彼此隔离运行(ACID 中的 I)。因此,如果隔离级别为 READ_COMMITTED,则在此事务提交之前,第二个应用中的事务不会在第一个应用的事务中看到任何更改。

听起来好像

您应该将第一个应用程序的工作拆分为单独的事务。更改通常仅在提交后对其他事务可见(如 JB Nizet 所述。你可以改变它,但你不应该改变)。

最新更新