JPA 연관관계
1:1 , 1:N , N:1, N:M 이렇게 구분하지만 실질적으로 사용하는건 1:N밖에 없다.
1:N이나 N:1이나 결국 같은 것이다.
1:N
@OneToMany@ManyToOne
연관관계를 사용하면 해당 어노테이션을 사용하게 되는데,@OneToMany의 테이블엔 상대의 리스트가 들어가게 된다.
하지만 테이블의 필드값으로 리스트는 본질적으로 들어가는것이 불가능한데
이는 JPA가 가능하게 해주는것이다.
각각 꼭 붙여야하는 것들
ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "상대방id")
OneToMany
@OneToMany(mappedBy = "나자신")
N:M
다대다 일경우 많이 생각하지말고 가운데 각각 값을 나열해줄 새로운 테이블을 만들어서 1:N으로 묶어서 사용해준다.

위와 같이 저자와 책을 생각할때 한책에 저자가 여러명일수 있고 한저자가 여러책을 집필할 수 있다.
이럴때 가운데 테이블을 하나 만들어서 거기에 각각 book1 : userId1 , book1 userId2 이런식으로 값을 짝지을 수 있다.
가운데 테이블이 ManyToOne을 가져가므로 저자와 책 테이블은 OneToMany 가 달린다.
'java 배우기 > TIL' 카테고리의 다른 글
| "Unsuccessful: drop table if exists user cascade" Spring 작동 오류 해결하기 (1) | 2024.08.30 |
|---|---|
| Spring 익숙해지기 개인과제2 (0) | 2024.08.30 |
| REST API (0) | 2024.08.28 |
| Spring 배우기 개인과제 (0) | 2024.08.27 |
| Spring 익숙해지기 - 2 (0) | 2024.08.23 |