본문 바로가기
스파르타 내배캠

[TIL] #22. 4주차 강의

by saemsaem 2024. 5. 22.


 

 [ Entity 연관 관계 ] 

1 대 1

@OneToOne

단방향 관계
 - 외래 키 주인 : 외래 키 등록, 수정, 삭제 가능
    나머지 : 조회만 가능

양방향 관계
 - 외래 키 주인 지정 : mappedBy ("키 주인 entity의 필드 명")
 - @JoinColumn( )으로 외래 키 속성을 설정할 수 있음

 

N 대 1

@ManyToOne

 

1 대 N

@OneToMany

단방향 관계
외래 키의 주인은 '1'이다 ⇒ List 필요
실제로는 'N'이 외래 키를 갖지만, 관리를 할 수는 없다
  - update가 추가적으로 발생한다는 문제점을 가진다

양방향 관계는 존재하지 않는다

 

N 대 M

@ManyToMany

중간테이블을 사용한다
중간테이블은 JPA (annotation)에 의해 만들어진다
  - 컨트롤 하기가 어렵기 때문에, 중간 테이블에 변경이 발생할 경우 문제가 생길 수 있다

 


 

 [ 지연로딩 ] 

지연로딩

LAZY
: 연관 관계가 설정된 entity의 정보를 필요할 때 가져옴

@~ToMany 일 경우 지연로딩을 default로 가진다

 

즉시로딩

EAGER
: 연관 관계가 설정된 entity의 정보를 바로 가져옴

@~ToOne 일 경우 즉시로딩을 default로 가진다

 

영속성 컨택스트와의 관계

지연로딩된 entity를 조회하기 위해서는 영속성 컨택스트가 존재해야 한다
⇒ transaction이 적용되어 있어야 함!!

 


 

 [ CASCADE ] 

영속성 전이

cascade = CascadeType.PERSIST

: 영속 상태의 entity에서 수행되는 작업들이 연관된 entity까지 전파되는 상황

 


 

 [ Orphan Entity ] 

고아 Entity

orphan removal / remove 사용 시 삭제하려고 하는 연관된 entity를 다른 곳에서도 참고하고 있지는 않는지 확인이 필요하다
⇒ @ManyToOne 사용 불가능

'스파르타 내배캠' 카테고리의 다른 글

[TIL] #24. JWT  (0) 2024.05.24
[TIL] #23. 연관관계  (0) 2024.05.24
[TIL] #21. spring 3주차 강의  (0) 2024.05.21
[TIL] #20. Transaction  (0) 2024.05.20
[TIL] #19. Spring + JPA  (0) 2024.05.17