整个事务提交后Hibernate是否刷新?

web*_*dev 0 hibernate flush hibernate-entitymanager

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

这不起作用,flush()方法的目的是什么,以及如何解决我的问题?请帮忙 !!

JB *_*zet 6

flush()将所有挂起的更改写入数据库.它执行insert,update和delete语句.提交事务之前(默认情况下)会自动调用它.

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