Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

8 Commits

Repository files navigation

QueryCounter

  • JPA Query counter with dynamic proxy
  • Implemented to count the number of queries occurring in JPA
  • QueryCounter Post

Usage

1. Specify the path to the Entity in the EntityManager.

/config/QueryCounterConfig.java@ConfigurationpublicclassQueryCountConfig {
...
@BeanpublicLocalContainerEntityManagerFactoryBeanentityManagerFactory() {
LocalContainerEntityManagerFactoryBeanem = newLocalContainerEntityManagerFactoryBean();
em.setDataSource(queryCountDataSource());
em.setPackagesToScan(
// Specify the path to the entity"com.example.querycounter.domain",
...
);
...
returnem;
}
...
}

2. Inject a Counter bean and start query count

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
publicclassQueryCounterTest {
@AutowiredprivateCountercounter;
@TestvoidtestQueryCount() {
counter.startQueryCount();
// Business logic that wants to count the number of queriesassertThat(counter.getQueryCount()).isEqualTo("Expected number of queries");
counter.printQueryCount();
}
}

Example

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
publicclassQueryCounterTest {
@AutowiredprivateCountercounter;
@AutowiredprivateUserServiceuserService;
@AutowiredprivateUserRepositoryuserRepository;
@AutowiredprivatePostRepositorypostRepository;
@BeforeEachvoidsetUp() {
for (inti = 1; i <= 10; i++) {
Useruser = userRepository.save(newUser(i + "번 user"));
Postpost = Post.builder()
.writer(user)
.contents(i + "번 post")
.build();
postRepository.save(post);
}
}
@TestvoidN_Plus_1_Problem() {
counter.startQueryCount();
List<String> userPostContentsList = userService.getAllPostContents();
assertThat(userPostContentsList).hasSize(10);
assertThat(counter.getQueryCount()).isEqualTo(11);
counter.printQueryCount();
}
}

9

About

JPA Query counter with dynamic proxy

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages