From 772a1ac80e5990662635e98569e0c7072e438d92 Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Sun, 26 Feb 2023 10:27:44 +0530 Subject: [PATCH 1/4] BAEL-6128 - New interfaces in Spring Data 3 --- .../spring-data-jpa-repo-3/README.md | 6 ++ .../spring-data-jpa-repo-3/pom.xml | 35 ++++++++++++ .../jpa/listrepositories/Application.java | 12 ++++ .../jpa/listrepositories/entity/Book.java | 57 +++++++++++++++++++ .../repository/BookListRepository.java | 13 +++++ .../BookPagingAndSortingRepository.java | 15 +++++ .../src/main/resources/application.properties | 1 + .../BookListRepositoryIntegrationTest.java | 28 +++++++++ ...ngAndSortingRepositoryIntegrationTest.java | 35 ++++++++++++ 9 files changed, 202 insertions(+) create mode 100644 persistence-modules/spring-data-jpa-repo-3/README.md create mode 100644 persistence-modules/spring-data-jpa-repo-3/pom.xml create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/Application.java create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/entity/Book.java create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepository.java create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepository.java create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/main/resources/application.properties create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepositoryIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-repo-3/README.md b/persistence-modules/spring-data-jpa-repo-3/README.md new file mode 100644 index 0000000000..419394d459 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/README.md @@ -0,0 +1,6 @@ +## Spring Data JPA - Repositories + +This module contains articles about Spring Data JPA. + +### Relevant Articles: +- More articles: [[<-- prev]](../spring-data-jpa-repo-2) diff --git a/persistence-modules/spring-data-jpa-repo-3/pom.xml b/persistence-modules/spring-data-jpa-repo-3/pom.xml new file mode 100644 index 0000000000..8cd8ca7f61 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.baeldung + parent-boot-3 + 0.0.1-SNAPSHOT + ../../parent-boot-3 + + spring-data-jpa-repo-3 + 0.0.1-SNAPSHOT + spring-data-jpa-repo-3 + spring-data-jpa-repo-3 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + + + diff --git a/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/Application.java b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/Application.java new file mode 100644 index 0000000000..13d9dbf414 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/Application.java @@ -0,0 +1,12 @@ +package com.baeldung.spring.data.jpa.listrepositories; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(SpringBootApplication.class, args); + } +} diff --git a/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/entity/Book.java b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/entity/Book.java new file mode 100644 index 0000000000..40f9f689a6 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/entity/Book.java @@ -0,0 +1,57 @@ +package com.baeldung.spring.data.jpa.listrepositories.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +@Entity +public class Book { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String title; + private String author; + private String isbn; + + public Book() { + } + + public Book(String title, String author, String isbn) { + this.title = title; + this.author = author; + this.isbn = isbn; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } +} diff --git a/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepository.java b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepository.java new file mode 100644 index 0000000000..aec8347850 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepository.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.data.jpa.listrepositories.repository; + +import com.baeldung.spring.data.jpa.listrepositories.entity.Book; +import org.springframework.data.repository.ListCrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface BookListRepository extends ListCrudRepository { + + List findBooksByAuthor(String author); +} diff --git a/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepository.java b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepository.java new file mode 100644 index 0000000000..1b37b0d1ef --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/main/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepository.java @@ -0,0 +1,15 @@ +package com.baeldung.spring.data.jpa.listrepositories.repository; + +import com.baeldung.spring.data.jpa.listrepositories.entity.Book; +import org.springframework.data.domain.Pageable; +import org.springframework.data.repository.ListCrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface BookPagingAndSortingRepository extends PagingAndSortingRepository, ListCrudRepository { + + List findBooksByAuthor(String author, Pageable pageable); +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo-3/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-repo-3/src/main/resources/application.properties new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepositoryIntegrationTest.java new file mode 100644 index 0000000000..d004d485e4 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookListRepositoryIntegrationTest.java @@ -0,0 +1,28 @@ +package com.baeldung.spring.data.jpa.listrepositories.repository; + +import com.baeldung.spring.data.jpa.listrepositories.entity.Book; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.Arrays; +import java.util.List; + +@SpringBootTest +public class BookListRepositoryIntegrationTest { + + @Autowired + private BookListRepository bookListRepository; + + @Test + public void givenDbContainsBooks_whenFindBooksByAuthor_thenReturnBooksByAuthor() { + Book book1 = new Book("Spring Data", "John Doe", "1234567890"); + Book book2 = new Book("Spring Data 2", "John Doe", "1234567891"); + Book book3 = new Book("Spring Data 3", "John Doe", "1234567892"); + bookListRepository.saveAll(Arrays.asList(book1, book2, book3)); + + List books = bookListRepository.findBooksByAuthor("John Doe"); + Assertions.assertEquals(3, books.size()); + } +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepositoryIntegrationTest.java new file mode 100644 index 0000000000..8f34e43e3f --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-3/src/test/java/com/baeldung/spring/data/jpa/listrepositories/repository/BookPagingAndSortingRepositoryIntegrationTest.java @@ -0,0 +1,35 @@ +package com.baeldung.spring.data.jpa.listrepositories.repository; + +import com.baeldung.spring.data.jpa.listrepositories.entity.Book; +import com.baeldung.spring.data.jpa.listrepositories.repository.BookPagingAndSortingRepository; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; + +import java.util.Arrays; +import java.util.List; + +@SpringBootTest +public class BookPagingAndSortingRepositoryIntegrationTest { + + @Autowired + private BookPagingAndSortingRepository bookPagingAndSortingRepository; + + @Test + public void givenDbContainsBooks_whenfindBooksByAuthor_thenReturnBooksByAuthor() { + Book book1 = new Book("Spring Data", "John Doe", "1234567890"); + Book book2 = new Book("Spring Data 2", "John Doe", "1234567891"); + Book book3 = new Book("Spring Data 3", "John Doe", "1234567892"); + bookPagingAndSortingRepository.saveAll(Arrays.asList(book1, book2, book3)); + + Pageable pageable = PageRequest.of(0, 2, Sort.by("title").descending()); + List books = bookPagingAndSortingRepository.findBooksByAuthor("John Doe", pageable); + Assertions.assertEquals(2, books.size()); + Assertions.assertEquals(book3.getId(), books.get(0).getId()); + Assertions.assertEquals(book2.getId(), books.get(1).getId()); + } +} \ No newline at end of file From 048588aa65306c34fda8c9c0679a8ecf4cdee34e Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Tue, 7 Mar 2023 22:00:37 +0530 Subject: [PATCH 2/4] BAEL-6128 - Adding module name to parent module --- persistence-modules/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 8c191b0abd..81e3aa242e 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -90,6 +90,7 @@ spring-data-jpa-query-3 spring-data-jpa-repo spring-data-jpa-repo-2 + spring-data-jpa-repo-3 spring-data-jdbc spring-data-keyvalue spring-data-mongodb From 5a29982862e9bbf36816cf3fe40133fa315fa7be Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Sun, 12 Mar 2023 11:42:05 +0530 Subject: [PATCH 3/4] BAEL-6128 - moving to jdk9 profile --- persistence-modules/pom.xml | 1 - pom.xml | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 81e3aa242e..8c191b0abd 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -90,7 +90,6 @@ spring-data-jpa-query-3 spring-data-jpa-repo spring-data-jpa-repo-2 - spring-data-jpa-repo-3 spring-data-jdbc spring-data-keyvalue spring-data-mongodb diff --git a/pom.xml b/pom.xml index 8b395d44f1..8751aedda6 100644 --- a/pom.xml +++ b/pom.xml @@ -936,6 +936,7 @@ optaplanner persistence-modules/sirix persistence-modules/spring-data-cassandra-2 + persistence-modules/spring-data-jpa-repo-3 quarkus-modules/quarkus-vs-springboot quarkus-modules/quarkus-jandex spring-boot-modules/spring-boot-cassandre @@ -1145,6 +1146,7 @@ optaplanner persistence-modules/sirix persistence-modules/spring-data-cassandra-2 + persistence-modules/spring-data-jpa-repo-3 quarkus-modules/quarkus-vs-springboot quarkus-modules/quarkus-jandex spring-boot-modules/spring-boot-cassandre From 56efd0b006e0b552e76c40aa1d0b32f911dead8b Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Sun, 12 Mar 2023 12:38:45 +0530 Subject: [PATCH 4/4] BAEL-6157 - Resolved merge issue --- pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pom.xml b/pom.xml index fb26df5d18..cf08bb08b2 100644 --- a/pom.xml +++ b/pom.xml @@ -894,8 +894,6 @@ persistence-modules/sirix persistence-modules/spring-data-cassandra-2 persistence-modules/spring-data-jpa-repo-3 - quarkus-modules/quarkus-vs-springboot - quarkus-modules/quarkus-jandex quarkus-modules spring-boot-modules/spring-boot-cassandre spring-boot-modules/spring-boot-3 @@ -1153,8 +1151,6 @@ persistence-modules/sirix persistence-modules/spring-data-cassandra-2 persistence-modules/spring-data-jpa-repo-3 - quarkus-modules/quarkus-vs-springboot - quarkus-modules/quarkus-jandex quarkus-modules spring-boot-modules/spring-boot-cassandre spring-boot-modules/spring-boot-3