From ebe1676ecb983735e727cd7a599635bc6476035a Mon Sep 17 00:00:00 2001 From: aj599w Date: Tue, 13 Aug 2024 16:11:13 +0200 Subject: [PATCH 1/3] added domain classes --- .../spring5webapp/domain/Author.java | 36 +++++++++++++++++++ .../spring5webapp/domain/Book.java | 36 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 src/main/java/guru/springframework/spring5webapp/domain/Author.java create mode 100644 src/main/java/guru/springframework/spring5webapp/domain/Book.java diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Author.java b/src/main/java/guru/springframework/spring5webapp/domain/Author.java new file mode 100644 index 0000000000..0e13d866c3 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/domain/Author.java @@ -0,0 +1,36 @@ +package guru.springframework.spring5webapp.domain; + +import javax.persistence.*; + +@Entity +public class Author { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private long id; + private String firstName; + private String lastName; + + 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/spring5webapp/domain/Book.java b/src/main/java/guru/springframework/spring5webapp/domain/Book.java new file mode 100644 index 0000000000..a7559fef23 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/domain/Book.java @@ -0,0 +1,36 @@ +package guru.springframework.spring5webapp.domain; + +import javax.persistence.*; + +@Entity +public class Book { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private long id; + private String title; + private String 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 getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } +} From a94880e687d07d32f913680872aa62baecfbaef3 Mon Sep 17 00:00:00 2001 From: aj599w Date: Tue, 13 Aug 2024 16:14:34 +0200 Subject: [PATCH 2/3] added relationships between domain classes --- .../spring5webapp/domain/Author.java | 12 ++++++++++++ .../springframework/spring5webapp/domain/Book.java | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Author.java b/src/main/java/guru/springframework/spring5webapp/domain/Author.java index 0e13d866c3..e397a47d0d 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Author.java @@ -1,6 +1,7 @@ package guru.springframework.spring5webapp.domain; import javax.persistence.*; +import java.util.Set; @Entity public class Author { @@ -10,6 +11,17 @@ public class Author { 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; } diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Book.java b/src/main/java/guru/springframework/spring5webapp/domain/Book.java index a7559fef23..ccbc8b99d1 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Book.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Book.java @@ -1,6 +1,7 @@ package guru.springframework.spring5webapp.domain; import javax.persistence.*; +import java.util.Set; @Entity public class Book { @@ -10,6 +11,18 @@ public class Book { private String title; private String isbn; + @ManyToMany(mappedBy = "books") + @JoinTable(name = "author_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; } From 78760d7e3a9dae16341769ba0e4a268609fc9942 Mon Sep 17 00:00:00 2001 From: aj599w Date: Wed, 21 Aug 2024 17:17:23 +0200 Subject: [PATCH 3/3] add equals(), hascode() and toString() method --- .../spring5webapp/domain/Author.java | 31 ++++++++++++++++++ .../spring5webapp/domain/Book.java | 32 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Author.java b/src/main/java/guru/springframework/spring5webapp/domain/Author.java index e397a47d0d..118329aee0 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Author.java @@ -45,4 +45,35 @@ 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 boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Author author = (Author) o; + return id == author.id; + } + + @Override + public int hashCode() { + return Long.hashCode(id); + } } + + + + + + + diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Book.java b/src/main/java/guru/springframework/spring5webapp/domain/Book.java index ccbc8b99d1..26a67f2d29 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Book.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Book.java @@ -46,4 +46,36 @@ public String getIsbn() { public void setIsbn(String isbn) { this.isbn = isbn; } + + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", title='" + title + '\'' + + ", isbn='" + isbn + '\'' + + ", authors=" + authors + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Book book = (Book) o; + return id == book.id; + } + + @Override + public int hashCode() { + return Long.hashCode(id); + } } + + + + + + + +