by Anonymous » 12 Apr 2025, 17:36
Der CategoryRepository ist so definiert:
Code: Select all
public interface CategoryRepository extends JpaRepository{
@Transactional
@Query("select c from Category c where name = :name")
Optional findByName(String name);
}
< /code>
Hier ist der Testfall: < /p>
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class CategoryRepositoryTests {
@Autowired
private CategoryRepository categoryRepository;
@Test
@Transactional
public void testCaching(){
categoryRepository.findByName("cat1");
categoryRepository.findByName("cat1");
}
}
In DB gibt es immer eine Kategorie Cat1 . Meine Erwartung ist nach der 1. Anweisung < /p>
Code: Select all
categoryRepository.findByName("cat1");
< /code>
Category
Objekt sollte im Persistenzkontext sein, und daher sollte der zweite Aufruf die DB nicht erneut abfragen. Dies geschieht nicht. Der zweite Anruf trifft erneut auf die DB. Hier sind die Protokolle.
Der CategoryRepository ist so definiert:
[code]public interface CategoryRepository extends JpaRepository{
@Transactional
@Query("select c from Category c where name = :name")
Optional findByName(String name);
}
< /code>
Hier ist der Testfall: < /p>
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class CategoryRepositoryTests {
@Autowired
private CategoryRepository categoryRepository;
@Test
@Transactional
public void testCaching(){
categoryRepository.findByName("cat1");
categoryRepository.findByName("cat1");
}
}
[/code]
In DB gibt es immer eine Kategorie Cat1 . Meine Erwartung ist nach der 1. Anweisung < /p>
[code]categoryRepository.findByName("cat1");
< /code>
Category[/code] Objekt sollte im Persistenzkontext sein, und daher sollte der zweite Aufruf die DB nicht erneut abfragen. Dies geschieht nicht. Der zweite Anruf trifft erneut auf die DB. Hier sind die Protokolle.