오늘 배운 것
Spring
- Jpa Entity 연관관계
단방향, 양방향
단방향은 B(entity)가 A (entity)를 참조할 수 없으나 A 가 B 를 참조할 수 있을 때 한쪽 entity만 사용이 가능하다 하여 단방향이라 한다. A,B가 서로 참조할 수 있을 때는 양방향이다.
DB 테이블 간에는 방향이 존재하지 않는다. Join할 거리(외래 키)만 있다면 테이블 간 조회가 불가능한 경우는 없기 때문
entity간 참조 설정을 단방향으로 할지 양방향으로 할지는 참조 필요성에 대한 판단하에 설정해주면 된다.
단순하게 A entity에 B entity 필드값을 선언해주면 된다.(후에 나오겠지만 List 형식일 수도 있음 1:N 관계 등등..)
외래 키(연관관계)의 주인
Jpa를 사용할 때 외래 키의 주인을 설정해 주어야 한다.(by @JoinColumn annotation) 또 상대 entity는 mappedby attribute로 주인이 누구인지 명시해주어야 주인 entity의 참조가 가능하다.(양방향일 시)
외래 키의 주인만이 외래 키를 등록, 수정, 삭제할 수 있으며 주인이 아닌 entity는 외래 키를 읽을 수만 있다.
단순히 외래 키를 줌으로써 상대 entity를 조회하기 위함도 있지만 양방향 관계일 때는 더 중요성이 대두된다.
서로에 대한 외래 키가 있다고 가정했을 때 Jpa는 어떤 외래 키로 참조할 지 헷갈리기 때문
외래 키의 주인은 N:1 일 때 N(다수)인 쪽이 가진다. 하나의 entity(row)가 여러 entity에 대한 외래키를 가지는 건 어색하다(중복).
다중성
1:1, 1:N, N:1, N:M 관계 가 있다. 각각 @OneToOne, @OneToMany, @ManyToMany annotation으로 설정이 가능하다.
이 관계들은 대칭성도 가진다. 양방향이라 가정했을 때 1:1 <-> 1:1, 1:N <-> N:1, N:M <-> N:M 이기 때문에 대응하는 annotation을 설정해주면 된다.
알고리즘
- 프로그래머스 : 올바른 괄호(Level 2, 스택)
느낀 점
.
'TIL' 카테고리의 다른 글
[23.11.20] (0) | 2023.11.20 |
---|---|
[23.11.17] (0) | 2023.11.17 |
[23.11.15] (3) | 2023.11.15 |
[23.11.14] (2) | 2023.11.14 |
[23.11.13] (1) | 2023.11.13 |