Entity 연관 관계

김동민·2023년 12월 12일

Spring

목록 보기
5/5

1. 연관 관계의 종류

상위클래스 -> 외래키의 주인 Entity_Class

하위클래스 -> 외래키를 받는 Entity_Class

1 대 1 관계 -> @OneToOne( ) :
하나의 상위클래스하나의 하위클래스를 가질수 있다

1 대 N 관계 -> @OneToMany( ) :
하나의 상위클래스여럿의 하위클래스를 가질수 있다

N 대 1 관계 -> @ManyToOne( ) :
@OneToMany일때 여럿의 하위클래스에 쓰는 어노테이션

N대 N 관계 -> @ManyToMany( ) :
서로 다른 하위클래스같은 상위클래스를 가졌을때 사용할수 있는 어노테이션


2. 연관 관계 어노테이션의 기능

어노테이션(예를들어 @OneToMany 경우)을 쓰면( )을 통해 기능을 추가할수 있다.

2-1. 상위 클래스

mappedBy = " (소문자)Class명 "
mappedBy는 상위클래스에 사용되며,
" "안에는 상위클래스의 Class명을 소문자로 쓰자.

cascade = CascadeType.REMOVE , PERSIST
cascade는 상위클래스에 사용되며,
...
CascadeType.REMOVE -> 상위클래스가 삭제될때 하위클래스도 삭제시켜준다
( 예를 들어 유저 -> 게시물 -> 댓글 이렇게 단방향으로 이어질때 게시물이 삭제되면 댓글도 같이 삭제된다. )
CascadeType.PERSIST -> 양방향일때 상위클래스가 영속화할때 하위클래스도 같이 영속화를 시켜준다.

orphanRemoval = true
CascadeType.REMOVE와 마찬가지로 상위클래스가 삭제될때 하위클래스도 삭제시켜준다


2-2. 하위 클래스

fetch = FetchType.LAZY , EAGER
fetch는 하위클래스에 사용되며,
...
FetchType.LAZY -> 필요할때 불어와서 실행시킨다
FetchType.EAGER -> 일단 불러와서 실행시킨다

@JoinColumn( )
@JoinColumn은 하위클래스에 사용되며,
name = " item_id"
nullable = false
위와 같은 Column의 부가적인 기능을 추가할때 쓰인다.
이때 name 같은 경우에는 상위클래스명+id 를 붙인다.


0개의 댓글