java 배우기/TIL

수준별 강의 복습하기

checkuu 2024. 8. 29. 10:51

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 가 달린다.