외래키를 갖는 테이블 : 1대 다의 경우 자식 테이블에서 갖는다. 자식테이블이 연관관계의 주인이 된다. 여기선 book엔티티가 카테고리 하나에 포함되기 때문에 book이 주인
단방향은 한 쪽의 엔티티가 상대 엔티티를 참조하고 있는 상태
그래서 주인이되는(ForeignKey가 있는) Book 엔티티에만 @ManyToOne 어노테이션을 추가.
* 엔티티 자신을 기준으로 다중성을 생각해야한다.
@JoinColumn(name="category_no")
@JoinColumn 어노테이션은 외래 키를 매핑 할 때 사용.
name 속성에는 매핑 할 실제 데이터베이스의 외래 키명을 지정.
OnetoMany 양방향
mappedBy속성은 주인이 아님(foreign key가 없음)을 JPA에게 알려준다. 여기서 "category"는 Book 엔티티에서
Category를 참조할 때 작성한 필드명
또한 book은 1:다 관계이므로 여러개이므로 List(Set, ArrayList) 등이 쓰인다.
이렇게 하면 양방향 관계가 맺어진다.
@OneToOne 단방향
주인인(외래키를 포함한) 테이블에 들어감.
@OneToOne 양방향
mappedBy 외래키가 없는 주인이 아닌 엔티티에 들어감. blog는 해당엔티티필드값
@ManyToMany는 매핑테이블을 하이버네이트가 직접 생성한다. 따라서 매핑테이블을 생성해서 1대다관계로 생성하여 작성해도 된다.
'스프링' 카테고리의 다른 글
JPA_SQL메소드 작성_page변수 (0) | 2020.12.23 |
---|---|
JPA_thymleaf문법_페이징 게시판 (0) | 2020.12.22 |
[스프링부트] 멀티모듈세팅_thymleaf화면구성_log4j (0) | 2020.12.16 |
[MAVEN] 멀티모듈 이클립스 생성 및 설정 임포트 (0) | 2020.12.10 |
스프링부트 그레이들 설정 의미 (0) | 2020.12.09 |