Introduction

The showcase project contains a simple application focusing on the book domain.

The application uses Spring Boot with an H2 in-memory database and it intentionally has multiple data-access performance flaws. The goal of the project is to find out which performance issues are present and to fix it.

There are multiple test cases for each issue so you can easily verify that the issues are solved.

Hibernate query logging and formatting is enabled to easily see what queries are running under the hood.

Test classes

The current test classes which are present:

  • AuthorServiceImplTest
  • BookServiceImplTest

Running the tests

mvn clean verify

Test failure messages

Select query count differs from the expected. Actual count was 2 but expected 1 queries

This test failure indicates that the service call should only execute a single query instead of 2.

Oops, you are selecting more data than needed. Remaining columns: [ISBN, LANGUAGE, PAGE_COUNT]

This means that when the service is returning only a subset of the entity attributes, we don't need to query all of them to have an efficient execution. This is the case when the service returns SimpleBookView where only two attributes id and name are present. In this case there is no need to query the isbn, language, pageCount attributes which are coming from the entity.