관심 주제 (Tag)는 엔티티인가? 벨류인가?
- 엔티티다. 왜? 태그 독자적인 라이프사이클이 있고 다른 곳(Study)에서도 참조할 테니까.
Tag엔티티
- Id
- Title (unique)
객체 관점에서의 관계
- MayToMany
- Account에서 Tag를 참조 (단방향)
릴레이션 DB 관점에서의 관계
- 조인 (join) 테이블을 사용해서 다대다 관계를 표현.
- Account_Tag에서 Account의 PK 참조.
- Account_Tag에서 Tag의 PK 참조.
Tag엔티티 생성
package me.weekbelt.studyolle.domain;
@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Tag {
@Id @GeneratedValue
private Long id;
@Column(unique = true, nullable = false)
private String title;
}
Account엔티티와 Tag엔티티의 다대다 단방향 연관관계 설정(연관관계의 주인은 Account)
package me.weekbelt.studyolle.domain;
@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Account {
// 기존 코드 .....
@ManyToMany
private Set<Tag> tags;
// 기존 코드 .....
}
참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#
'스프링과 JPA 기반 웹 어플리케이션 개발 > 2부(관심 주제와 지역 정보)' 카테고리의 다른 글
37. 관심 주제 자동완성 (0) | 2020.04.22 |
---|---|
36. 관심 주제 삭제 (0) | 2020.04.22 |
35. 관심 주제 조회 (0) | 2020.04.22 |
34. 관심주제 등록하기 (0) | 2020.04.22 |
32. 관심 주제와 지역 정보 관리 기능 미리보기 (0) | 2020.04.22 |