스프링과 JPA 기반 웹 애플리케이션 개발 #54 스터디 도메인
해당 내용은 인프런, 스프링과 JPA 기반 웹 애플리케이션 개발의 강의 내용을 바탕으로 작성된 내용입니다.
강의를 학습하며 요약한 내용을 출처를 표기하고 블로깅 또는 문서로 공개하는 것을 허용합니다 라는 원칙 하에 요약 내용을 공개합니다. 출처는 위에 언급되어있듯, 인프런, 스프링과 JPA 기반 웹 애플리케이션 개발입니다.
제가 학습한 소스코드는 https://github.com/n00nietzsche/jakestudy_webapp 에 지속적으로 업로드 됩니다. 매 커밋 메세지에 강의의 어디 부분까지 진행됐는지 기록해놓겠습니다.
public class Study {
private Long Id;
private Set<Account> managers;
private Set<Account> members;
...
private Set<Tag> tags;
private Set<Zone> zones;
}
Study
에서 Account
쪽으로 @ManyToMany
단방향 관계 두개 (managers
, members
)Study
에서 Zone
으로 @ManyToMany
단방향 관계Study
에서 Tag
로 @ManyToMany
단방향 관계@Entity
@Getter @Setter @EqualsAndHashCode(of = "id")
@Builder @NoArgsConstructor @AllArgsConstructor
public class Study {
@Id @GeneratedValue
private Long id;
@ManyToMany
private Set<Account> managers;
@ManyToMany
private Set<Account> members;
@Column(unique = true)
private String path;
private String title;
private String shortDescription;
// 스터디 정보는 varchar 안에 담기 힘들다.
@Lob @Basic(fetch = FetchType.EAGER)
private String fullDescription;
@Lob @Basic(fetch = FetchType.EAGER)
private String image;
@ManyToMany
private Set<Tag> tags;
@ManyToMany
private Set<Zone> zones;
private LocalDateTime publishedDateTime;
private LocalDateTime closedDateTime;
private LocalDateTime recruitingUpdatedTime;
private boolean isRecruiting;
private boolean isPublished;
private boolean isClosed;
private boolean isUsingBanner;
}
Account
, Tag
, Zone
을 단방향으로 참조한다. 일단, @ManyToMany
를 쓰는 형태로 구현해보자. 그리고 스터디 설명이나 이미지 등 긴 문자열이 들어가는 부분은 @Lob
으로 처리해주었다.