N+1 fixed

This commit is contained in:
Tom Ekshtein 2023-07-20 17:27:31 -07:00
parent c9dafc830a
commit 70b44cca62
8 changed files with 9 additions and 6 deletions

View file

@ -9,6 +9,11 @@
<module name="spring-petclinic.main" />
<option name="PROGRAM_PARAMETERS" value="--warning-mode all" />
<option name="VM_PARAMETERS" value="-Dotel.instrumentation.jdbc-datasource.enabled=true" />
<extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
<option name="credential" />
<option name="region" />
<option name="useCurrentConnection" value="false" />
</extension>
<method v="2">
<option name="Gradle.BeforeRunTask" enabled="true" tasks="bootJar" externalProjectPath="$PROJECT_DIR$" vmOptions="" scriptParameters="" />
</method>

View file

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 172 KiB

BIN
AfterOverview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 265 KiB

View file

Before

Width:  |  Height:  |  Size: 485 KiB

After

Width:  |  Height:  |  Size: 485 KiB

View file

Before

Width:  |  Height:  |  Size: 793 KiB

After

Width:  |  Height:  |  Size: 793 KiB

View file

@ -20,6 +20,7 @@ import java.util.Map;
import io.opentelemetry.instrumentation.annotations.WithSpan;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
@ -104,9 +105,8 @@ class OwnerController {
// empty owner search for all records without n+1 queries
if (StringUtils.isEmpty(owner.getLastName())){
List<Owner> ownerList = owners.findAllWithPetsAndVisits();
//model.addAttribute("owners", ownerList);
//need to figure out displaying owners without n+1.
return "owners/ownersList";
Page<Owner> ownerPageNP1 = new PageImpl<>(ownerList);
return addPaginationModel(0, model, ownerPageNP1);
}
// find owners by last name
@ -139,7 +139,7 @@ class OwnerController {
}
private Page<Owner> findPaginatedForOwnersLastName(int page, String lastname) {
int pageSize = 12;
int pageSize = 5;
Pageable pageable = PageRequest.of(page - 1, pageSize);
return owners.findByLastName(lastname, pageable);
}

View file

@ -61,8 +61,6 @@ public interface OwnerRepository extends Repository<Owner, Integer> {
* Retrieve {@link Owner}s all owners including their pets and visitations
* @return a Collection of {@link Owner}s
*/
/*@Query("SELECT DISTINCT owner FROM Owner owner LEFT JOIN FETCH owner.pets pet LEFT JOIN FETCH visits WHERE pet.id = visits.petId")
List<Owner> findAllWithPetsAndVisits();*/
@Query("SELECT DISTINCT owner FROM Owner owner LEFT JOIN FETCH owner.pets LEFT JOIN FETCH pets.visits")
List<Owner> findAllWithPetsAndVisits();