0

使用 Spring 数据 JPA 并在 @Service 类中使用此方法

@Transactional(propagation = Propagation.NEVER)
public void getClientBydIdThreeTimes() {
    clientRepository.findById(1L);
    clientRepository.findById(1L);
    clientRepository.findById(1L);
}
  • 它会命中数据库三遍吗?它不应该是因为没有事务环境(传播 = Propagation.NEVER),并且每个查询本身都是一个事务,因此每次执行查询时,都会创建具有自己持久上下文的 entityManager,对吗?
  • 我有一个奇怪的行为,因为当我发出一个 http 请求并执行此方法时,只有第一个查询被发送到缓存接下来的两个调用的数据库,但是如果我从我的应用程序内部调用此方法(如 Spring 批处理任务) ,有3条sql发送到数据库。我不明白,它应该具有相同的行为,对吧?

谢谢

4

0 回答 0