1 대 1 관계 -> @OneToOne( ) :
하나의 상위클래스는 하나의 하위클래스를 가질수 있다
1 대 N 관계 -> @OneToMany( ) :
하나의 상위클래스는 여럿의 하위클래스를 가질수 있다
N 대 1 관계 -> @ManyToOne( ) :
@OneToMany일때 여럿의 하위클래스에 쓰는 어노테이션
N대 N 관계 -> @ManyToMany( ) :
서로 다른 하위클래스가 같은 상위클래스를 가졌을때 사용할수 있는 어노테이션
mappedBy = " (소문자)Class명 "
mappedBy는 상위클래스에 사용되며,
" "안에는 상위클래스의 Class명을 소문자로 쓰자.
cascade = CascadeType.REMOVE , PERSIST
cascade는 상위클래스에 사용되며,
...
CascadeType.REMOVE -> 상위클래스가 삭제될때 하위클래스도 삭제시켜준다
( 예를 들어 유저 -> 게시물 -> 댓글 이렇게 단방향으로 이어질때 게시물이 삭제되면 댓글도 같이 삭제된다. )
CascadeType.PERSIST -> 양방향일때 상위클래스가 영속화할때 하위클래스도 같이 영속화를 시켜준다.
orphanRemoval = true
CascadeType.REMOVE와 마찬가지로 상위클래스가 삭제될때 하위클래스도 삭제시켜준다
fetch = FetchType.LAZY , EAGER
fetch는 하위클래스에 사용되며,
...
FetchType.LAZY -> 필요할때 불어와서 실행시킨다
FetchType.EAGER -> 일단 불러와서 실행시킨다
@JoinColumn( )
@JoinColumn은 하위클래스에 사용되며,
name = " item_id"
nullable = false
위와 같은 Column의 부가적인 기능을 추가할때 쓰인다.
이때 name 같은 경우에는 상위클래스명+id 를 붙인다.