From 302196a2cfe29fcc63bd6a4cd655a3666570ee4e Mon Sep 17 00:00:00 2001 From: Yazan Date: Sun, 15 Sep 2024 17:43:33 +0400 Subject: [PATCH 1/5] jpa-entities --- .../spring6webapp/domain/Author.java | 53 ++++++++++++++++++ .../spring6webapp/domain/Book.java | 54 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 src/main/java/guru/springframework/spring6webapp/domain/Author.java create mode 100644 src/main/java/guru/springframework/spring6webapp/domain/Book.java diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Author.java b/src/main/java/guru/springframework/spring6webapp/domain/Author.java new file mode 100644 index 000000000..a01b07dd2 --- /dev/null +++ b/src/main/java/guru/springframework/spring6webapp/domain/Author.java @@ -0,0 +1,53 @@ +package com.guru.spring.simpleSpringWeb.domain; + + +import jakarta.persistence.*; + +import java.util.Set; + +@Entity +public class Author { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String firstName; + + private String lastName; + + @ManyToMany(mappedBy = "authors") + private Set books; + + public Set getBooks() { + return books; + } + + public void setBooks(Set books) { + this.books = books; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Book.java b/src/main/java/guru/springframework/spring6webapp/domain/Book.java new file mode 100644 index 000000000..3d89b21f8 --- /dev/null +++ b/src/main/java/guru/springframework/spring6webapp/domain/Book.java @@ -0,0 +1,54 @@ +package com.guru.spring.simpleSpringWeb.domain; + +import jakarta.persistence.*; + +import java.util.Set; + +@Entity +public class Book { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String title; + + private String isbn; + + @ManyToMany + @JoinTable(name = "autor_book",joinColumns = @JoinColumn(name = "book_id"), + inverseJoinColumns = @JoinColumn(name = "author_id")) + private Set authors; + + public Set getAuthors() { + return authors; + } + + public void setAuthors(Set authors) { + this.authors = authors; + } + + 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 getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } +} From 29e9a1230ba53c8f72aa0c210db22803f4303629 Mon Sep 17 00:00:00 2001 From: Yazan Date: Sun, 15 Sep 2024 17:47:27 +0400 Subject: [PATCH 2/5] fix packages --- .../java/guru/springframework/spring6webapp/domain/Author.java | 3 ++- .../java/guru/springframework/spring6webapp/domain/Book.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Author.java b/src/main/java/guru/springframework/spring6webapp/domain/Author.java index a01b07dd2..f10582d72 100644 --- a/src/main/java/guru/springframework/spring6webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring6webapp/domain/Author.java @@ -1,8 +1,9 @@ -package com.guru.spring.simpleSpringWeb.domain; +package guru.springframework.spring6webapp.domain; import jakarta.persistence.*; +import java.awt.print.Book; import java.util.Set; @Entity diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Book.java b/src/main/java/guru/springframework/spring6webapp/domain/Book.java index 3d89b21f8..791999b23 100644 --- a/src/main/java/guru/springframework/spring6webapp/domain/Book.java +++ b/src/main/java/guru/springframework/spring6webapp/domain/Book.java @@ -1,4 +1,4 @@ -package com.guru.spring.simpleSpringWeb.domain; +package guru.springframework.spring6webapp.domain; import jakarta.persistence.*; From fe0b4aa755f13cf4cf64dcdac4c4ce28f4c675e5 Mon Sep 17 00:00:00 2001 From: Yazan Date: Sun, 15 Sep 2024 17:51:19 +0400 Subject: [PATCH 3/5] fix import --- .../java/guru/springframework/spring6webapp/domain/Author.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Author.java b/src/main/java/guru/springframework/spring6webapp/domain/Author.java index f10582d72..e549ef26e 100644 --- a/src/main/java/guru/springframework/spring6webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring6webapp/domain/Author.java @@ -3,7 +3,6 @@ import jakarta.persistence.*; -import java.awt.print.Book; import java.util.Set; @Entity From 3660446e4d4a62eb8b697d6cfa2fee874182f979 Mon Sep 17 00:00:00 2001 From: Yazan Date: Sun, 15 Sep 2024 17:59:47 +0400 Subject: [PATCH 4/5] equality and to string methods --- .../spring6webapp/domain/Author.java | 23 +++++++++++++++++++ .../spring6webapp/domain/Book.java | 22 ++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Author.java b/src/main/java/guru/springframework/spring6webapp/domain/Author.java index e549ef26e..cc2b21625 100644 --- a/src/main/java/guru/springframework/spring6webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring6webapp/domain/Author.java @@ -50,4 +50,27 @@ public String getLastName() { public void setLastName(String lastName) { this.lastName = lastName; } + + @Override + public String toString() { + return "Author{" + + "id=" + id + + ", firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", books=" + books + + '}'; + } + + @Override + public final boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Author author)) return false; + + return id.equals(author.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } } diff --git a/src/main/java/guru/springframework/spring6webapp/domain/Book.java b/src/main/java/guru/springframework/spring6webapp/domain/Book.java index 791999b23..1744b477d 100644 --- a/src/main/java/guru/springframework/spring6webapp/domain/Book.java +++ b/src/main/java/guru/springframework/spring6webapp/domain/Book.java @@ -51,4 +51,26 @@ public String getIsbn() { public void setIsbn(String isbn) { this.isbn = isbn; } + + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", title='" + title + '\'' + + ", isbn='" + isbn + '\'' + + '}'; + } + + @Override + public final boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Book book)) return false; + + return id.equals(book.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } } From ecab7bebbc7e6ccc1a21f0f13ceab6d702fb1d0b Mon Sep 17 00:00:00 2001 From: Yazan Date: Sun, 15 Sep 2024 18:25:13 +0400 Subject: [PATCH 5/5] Author and Book Repositories --- .../spring6webapp/domain/repository/AuthorRepository.java | 7 +++++++ .../spring6webapp/domain/repository/BookRepository.java | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 src/main/java/guru/springframework/spring6webapp/domain/repository/AuthorRepository.java create mode 100644 src/main/java/guru/springframework/spring6webapp/domain/repository/BookRepository.java diff --git a/src/main/java/guru/springframework/spring6webapp/domain/repository/AuthorRepository.java b/src/main/java/guru/springframework/spring6webapp/domain/repository/AuthorRepository.java new file mode 100644 index 000000000..83126266b --- /dev/null +++ b/src/main/java/guru/springframework/spring6webapp/domain/repository/AuthorRepository.java @@ -0,0 +1,7 @@ +package guru.springframework.spring6webapp.domain.repository; + +import guru.springframework.spring6webapp.domain.Author; +import org.springframework.data.repository.CrudRepository; + +public interface AuthorRepository extends CrudRepository { +} diff --git a/src/main/java/guru/springframework/spring6webapp/domain/repository/BookRepository.java b/src/main/java/guru/springframework/spring6webapp/domain/repository/BookRepository.java new file mode 100644 index 000000000..e8422f2f5 --- /dev/null +++ b/src/main/java/guru/springframework/spring6webapp/domain/repository/BookRepository.java @@ -0,0 +1,7 @@ +package guru.springframework.spring6webapp.domain.repository; + +import guru.springframework.spring6webapp.domain.Book; +import org.springframework.data.repository.CrudRepository; + +public interface BookRepository extends CrudRepository { +}