본문 바로가기
스프링과 JPA 기반 웹 어플리케이션 개발/2부(관심 주제와 지역 정보)

33. 관심 주제 도메인

by Backchus 2020. 4. 22.

관심 주제 (Tag)는 엔티티인가? 벨류인가?

  • 엔티티다. 왜? 태그 독자적인 라이프사이클이 있고 다른 곳(Study)에서도 참조할 테니까.

Tag엔티티

  • Id
  • Title (unique)

 

객체 관점에서의 관계

객체 관점에서의 관계

  • MayToMany
  • Account에서 Tag를 참조 (단방향)

 

릴레이션 DB 관점에서의 관계

릴레이션 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 기반 웹 애플리케이션 개발 - 인프런

이 강좌에서 여러분은 실제로 운영 중인 서비스를 스프링, JPA 그리고 타임리프를 비롯한 여러 자바 기반의 여러 오픈 소스 기술을 사용하여 웹 애플리케이션을 개발하는 과정을 학습할 수 있습니다. 이 강좌를 충분히 학습한다면 여러분 만의 웹 서비스를 만들거나 취직에 도움이 될만한 포트폴리오를 만들 수 있을 겁니다. 활용 웹 개발 프레임워크 및 라이브러리 Java Spring Spring Boot Spring Data JPA Thymeleaf 온라인 강의 스

www.inflearn.com