From 22d3d4b2a082cb1da37a4d309c8c9a0064a1cd53 Mon Sep 17 00:00:00 2001 From: msung99 Date: Mon, 19 Aug 2024 23:03:58 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20manytoone=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/Book.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Book.java b/spring-data-jpa-2/initial/src/main/java/cholog/Book.java index 6f119218..78c52bdb 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Book.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Book.java @@ -1,9 +1,6 @@ package cholog; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; import java.util.Set; @@ -14,11 +11,16 @@ public class Book { private Long id; private String name; + @ManyToOne + private Publisher publisher; + public Book() { } public Book(String name, Publisher publisher) { + this.name = name; + this.publisher = publisher; } public Long getId() { @@ -30,7 +32,7 @@ public String getName() { } public Publisher getPublisher() { - return null; + return publisher; } public Set getAuthors() { From c836f13a6ea40de6732fd43d2d314704d930b9b1 Mon Sep 17 00:00:00 2001 From: msung99 Date: Mon, 19 Aug 2024 23:08:47 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EA=B8=B0=ED=83=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/Author.java | 19 ++++++++++- .../initial/src/main/java/cholog/Book.java | 23 +++++++++---- .../src/main/java/cholog/BookAuthor.java | 33 +++++++++++++++++++ .../initial/src/main/java/cholog/Person.java | 12 ++++--- .../src/main/java/cholog/Publisher.java | 13 +++++--- .../src/test/java/cholog/ManyToManyTest.java | 2 ++ 6 files changed, 86 insertions(+), 16 deletions(-) diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Author.java b/spring-data-jpa-2/initial/src/main/java/cholog/Author.java index 937debe1..12dfabef 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Author.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Author.java @@ -4,6 +4,11 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; + +import java.util.HashSet; +import java.util.Set; @Entity public class Author { @@ -11,10 +16,18 @@ public class Author { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @OneToOne + private Person person; + + @OneToMany(mappedBy = "author") + private Set books = new HashSet<>(); + public Author(Person person) { + this.person = person; } public Author() { + } public Long getId() { @@ -22,6 +35,10 @@ public Long getId() { } public Person getPerson() { - return null; + return person; + } + + public Set getBooks() { + return books; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Book.java b/spring-data-jpa-2/initial/src/main/java/cholog/Book.java index 78c52bdb..89eb83b0 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Book.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Book.java @@ -1,7 +1,13 @@ package cholog; -import jakarta.persistence.*; - +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; + +import java.util.HashSet; import java.util.Set; @Entity @@ -14,15 +20,18 @@ public class Book { @ManyToOne private Publisher publisher; - public Book() { - - } + @OneToMany(mappedBy = "book") + private Set authors = new HashSet<>(); public Book(String name, Publisher publisher) { this.name = name; this.publisher = publisher; } + public Book() { + + } + public Long getId() { return id; } @@ -35,7 +44,7 @@ public Publisher getPublisher() { return publisher; } - public Set getAuthors() { - return null; + public Set getAuthors() { + return authors; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java b/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java index 4d9c8d73..4ba1c9eb 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java @@ -1,7 +1,40 @@ package cholog; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; + +@Entity public class BookAuthor { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + private Book book; + + @ManyToOne + private Author author; + public BookAuthor(Book book, Author author) { + this.book = book; + this.author = author; + } + + public BookAuthor() { + } + + public Long getId() { + return id; + } + + public Book getBook() { + return book; + } + public Author getAuthor() { + return author; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Person.java b/spring-data-jpa-2/initial/src/main/java/cholog/Person.java index 6cf1d009..3d5f55fe 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Person.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Person.java @@ -4,6 +4,7 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; @Entity public class Person { @@ -12,14 +13,17 @@ public class Person { private Long id; private String name; - public Person() { - - } + @OneToOne(mappedBy = "person") + private Author author; public Person(String name) { this.name = name; } + public Person() { + + } + public Long getId() { return id; } @@ -29,6 +33,6 @@ public String getName() { } public Author getAuthor() { - return null; + return author; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java b/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java index b0c6303e..70338dd8 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java @@ -4,7 +4,9 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import java.util.HashSet; import java.util.Set; @Entity @@ -14,6 +16,9 @@ public class Publisher { private Long id; private String name; + @OneToMany(mappedBy = "publisher") + private Set books = new HashSet<>(); + public Publisher(String name) { this.name = name; } @@ -29,11 +34,11 @@ public String getName() { return name; } - public void addBook(Book book) { - + public Set getBooks() { + return books; } - public Set getBooks() { - return null; + public void addBook(Book book) { + this.books.add(book); } } diff --git a/spring-data-jpa-2/initial/src/test/java/cholog/ManyToManyTest.java b/spring-data-jpa-2/initial/src/test/java/cholog/ManyToManyTest.java index c46e1058..618a0cbd 100644 --- a/spring-data-jpa-2/initial/src/test/java/cholog/ManyToManyTest.java +++ b/spring-data-jpa-2/initial/src/test/java/cholog/ManyToManyTest.java @@ -14,6 +14,8 @@ public class ManyToManyTest { @Autowired private BookRepository bookRepository; + @Autowired + private AuthorRepository authorRepository; @PersistenceContext private EntityManager entityManager;