본문 바로가기
🍃SpringFrameworks/SpringDataJPA

[JPA] 1:N Relation. 관계 설정

by inbeom 2023. 9. 10.
728x90

[1:1] 관계와 거의 유사하지만 하나의 User가 여러 UserHistory를 가질 수 있는 관계이다.

[1:N], [N:1] 관계는 상황에 따라 둘다 걸어 양방향에서 참조가 가능하게 할 수 도 있고 한쪽 방향에서만 걸어줄 수도 있다.

 

💡 1:N 릴레이션 (주 테이블)

매우 간단하다. (기본적인 것은 1:1 릴레이션 참고!)

  • @OneToMany 어노테이션을 붙여준다.
  • 1:1 관계에서 주 테이블(User)에서 대상 테이블(UserHistory) 타입의 속성을 선언했다면,
  • 1:N 관계에서는 대상 테이블(UserHistory)타입을 갖는 List타입으로 속성을 선언해주면 된다.

(UserEntity)

@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", insertable = false, updatable = false)
private List<UserHistory> userHistory = new ArrayList<>();

User에서 UserHistory테이블을 삽입, 갱신하지 못하도록 설정

 

💡 N:1 릴레이션 (대상 테이블)

보통 1:N 관계로 세팅하지만 N:1 관계를 추가해 대상 테이블(UserHistory)에서 주 테이블(User)을 참조 할 수 있게 한다.

(UserHistory)

@ManyToOne
private User user;

 

N:N 관계는 복잡하여 잘 사용하지 않는다.

728x90