diff --git a/src/main/java/org/springframework/samples/petclinic/vet/Vet.java b/src/main/java/org/springframework/samples/petclinic/vet/Vet.java index 7a70155c3ea..27477fcd49e 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/Vet.java +++ b/src/main/java/org/springframework/samples/petclinic/vet/Vet.java @@ -23,9 +23,7 @@ import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; -import org.springframework.samples.petclinic.model.Person; - -import jakarta.persistence.Entity; +import org.springframework.samples.petclinic.model.Person;import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinTable; @@ -42,10 +40,10 @@ * @author Arjen Poutsma */ @Entity -@Table(name = "vets") -public class Vet extends Person { +@Table(name = "vets")public class Vet extends Person { - @ManyToMany(fetch = FetchType.EAGER) + @ManyToMany(fetch = FetchType.LAZY) + @BatchSize(size=100) @JoinTable(name = "vet_specialties", joinColumns = @JoinColumn(name = "vet_id"), inverseJoinColumns = @JoinColumn(name = "specialty_id")) private Set specialties; @@ -76,4 +74,4 @@ public void addSpecialty(Specialty specialty) { getSpecialtiesInternal().add(specialty); } -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java b/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java index 8b9e0823c86..753967e270f 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java +++ b/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java @@ -20,9 +20,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Collection; +import org.springframework.transaction.annotation.Transactional;import java.util.Collection; /** * Repository class for Vet domain objects All method names are compliant @@ -34,13 +32,13 @@ * @author Juergen Hoeller * @author Sam Brannen * @author Michael Isvy - */ -public interface VetRepository extends Repository { + */public interface VetRepository extends Repository { /** * Retrieve all Vets from the data store. * @return a Collection of Vets */ + @EntityGraph(attributePaths = {"specialties"}) @Transactional(readOnly = true) @Cacheable("vets") Collection findAll() throws DataAccessException; @@ -51,8 +49,9 @@ public interface VetRepository extends Repository { * @return * @throws DataAccessException */ + @EntityGraph(attributePaths = {"specialties"}) @Transactional(readOnly = true) @Cacheable("vets") Page findAll(Pageable pageable) throws DataAccessException; -} +} \ No newline at end of file diff --git a/src/main/resources/db/migration/V5__add_vet_specialties_indexes.sql b/src/main/resources/db/migration/V5__add_vet_specialties_indexes.sql new file mode 100644 index 00000000000..0298146a142 --- /dev/null +++ b/src/main/resources/db/migration/V5__add_vet_specialties_indexes.sql @@ -0,0 +1,3 @@ +CREATE INDEX IF NOT EXISTS idx_vet_specialties_vet_id ON vet_specialties (vet_id); +CREATE INDEX IF NOT EXISTS idx_vet_specialties_specialty_id ON vet_specialties (specialty_id); +CREATE INDEX IF NOT EXISTS idx_specialties_id ON specialties (id); \ No newline at end of file