我有以下实现。@TransactionalpublicvoidsaveAndGenerateResult(Datadata){saveDataInTableA(data.someAmountForA);saveDataInTableB(data.someAmountForB);callAnAggregatedFunction(data);}publicvoidsaveDataInTableA(DataAa){tableARepository.saveAndFlush(a);}publicvoidsaveDataInTableA(DataBb){tableBRepository.save
我正在使用spring-data-jpainterfaceCrudRepository在每日批量导入时将大型数据集保存在数据库中。@BeanpublicItemWriterjpaItemWriter(){RepositoryItemWriterwriter=newRepositoryItemWriter();writer.setRepository(repository);writer.setMethodName("save");returnwriter;}此接口(interface)的默认实现是SimpleJpaRepository,它提供了一个saveAndFlush()方法。那是
我正在尝试通过JpaRepository测试一些CRUD操作来学习SpringDataJPA。我遇到了两种方法save和saveAndFlush。我不明白这两者之间的区别。在调用save时,我的更改也被保存到数据库中,那么saveAndFlush有什么用处。 最佳答案 在saveAndFlush上,更改将立即在此命令中刷新到DB。使用save,这不一定是正确的,并且可能只保留在内存中,直到发出flush或commit命令。但请注意,即使您刷新事务中的更改并且不提交它们,在此事务中提交之前,这些更改仍然不会对外部事务可见。在您的情况下
我有一个由一组微服务构建的应用程序。一个服务接收数据,通过SpringJPA和Eclipse链接将其持久化,然后向第二个服务发送警报(AMQP)。根据特定条件,第二个服务然后针对持久化数据调用RESTfullWeb服务以检索保存的信息。我注意到有时RESTfull服务会返回空数据集,即使数据之前已保存。查看持久化服务的代码,使用了save而不是saveandflush,所以我假设数据刷新的速度不够快以供下游服务查询。saveandflush是否有我应该厌倦的成本,或者默认使用它是否合理?它会确保数据对下游应用程序的即时可用性吗?应该说原来的持久化函数是包裹在@Transactional
我有一个由一组微服务构建的应用程序。一个服务接收数据,通过SpringJPA和Eclipse链接将其持久化,然后向第二个服务发送警报(AMQP)。根据特定条件,第二个服务然后针对持久化数据调用RESTfullWeb服务以检索保存的信息。我注意到有时RESTfull服务会返回空数据集,即使数据之前已保存。查看持久化服务的代码,使用了save而不是saveandflush,所以我假设数据刷新的速度不够快以供下游服务查询。saveandflush是否有我应该厌倦的成本,或者默认使用它是否合理?它会确保数据对下游应用程序的即时可用性吗?应该说原来的持久化函数是包裹在@Transactional