스프링과 JPA 기반 웹 애플리케이션 개발 #54 스터디 도메인
스프링과 JPA 기반 웹 애플리케이션 개발 #54 스터디 도메인
해당 내용은 인프런, 스프링과 JPA 기반 웹 애플리케이션 개발의 강의 내용을 바탕으로 작성된 내용입니다.
강의를 학습하며 요약한 내용을 출처를 표기하고 블로깅 또는 문서로 공개하는 것을 허용합니다 라는 원칙 하에 요약 내용을 공개합니다. 출처는 위에 언급되어있듯, 인프런, 스프링과 JPA 기반 웹 애플리케이션 개발입니다.
제가 학습한 소스코드는 https://github.com/n00nietzsche/jakestudy_webapp 에 지속적으로 업로드 됩니다. 매 커밋 메세지에 강의의 어디 부분까지 진행됐는지 기록해놓겠습니다.
스터디 도메인
Study 엔티티
public class Study {
private Long Id;
private Set<Account> managers;
private Set<Account> members;
...
private Set<Tag> tags;
private Set<Zone> zones;
}
객체 관점에서 Study 엔티티와 다른 엔티티의 관계
Study
에서Account
쪽으로@ManyToMany
단방향 관계 두개 (managers
,members
)Study
에서Zone
으로@ManyToMany
단방향 관계Study
에서Tag
로@ManyToMany
단방향 관계
Study
@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
으로 처리해주었다.
Author And Source
이 문제에 관하여(스프링과 JPA 기반 웹 애플리케이션 개발 #54 스터디 도메인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jakeseo_me/스프링과-JPA-기반-웹-애플리케이션-개발-54-스터디-도메인저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)