Programming/Spring
[Spring/스프링] 롤링페이퍼(게시판) 프로젝트 1. Entity 생성
예민한고라니
2022. 3. 22. 21:23
https://coding-zzang.tistory.com/18
전편 입니다
"Entity를 정의하고 코딩해보자!"
entity를 만들기 이전! 우선 관계부터 설정해보겠다.
크게 회원을 의미하는 member, 각각의 롤링페이퍼를 의미하는 paper, 그리고 댓글을 의미하는 comment 이렇게 3가지의 entity로 이루어져있다.
이때 한 회원은 1개이상의 페이퍼를 만들어 공유할수 있다 (ex. 숭실 산공 롤링페이퍼 / 목동 종로 롤링페이퍼 이런식)
따라서 Member와 Paper는 일대다의 관계를 가진다.
마찬가지로 하나의 페이퍼 내에는 여러 친구들로부터 댓글이 달릴수 있다.
따라서 Paper와 Comment 역시 일대다의 관계를 가진다!
이제 코드로 나타내보겠다.
1. Member entity
@Entity
@Getter @Setter
public class Member {
@Id @GeneratedValue
@Column(name = "member_id")
private Long id;
private String password;
private String name;
@OneToMany(mappedBy = "member")
private List<Paper> papers = new ArrayList<>();
}
2. Paper entity
@Entity
@Getter @Setter
public class Paper {
@Id @GeneratedValue
@Column(name = "paper_id")
private Long id;
private String paperName;
private String paperIntro;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member; //페이퍼 주인 = 회원
@OneToMany(mappedBy = "paper")
private List<Comment> Comments = new ArrayList<>();
}
3. Comment Entity
@Entity
@Getter @Setter
public class Comment {
@Id @GeneratedValue
@Column(name = "comment_id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "paper_id")
private Paper paper;
private String name;
private String context;
private LocalDateTime commentDate;
}
- 공통적으로 @Entity 어노테이션을 달아 해당 클래스가 테이블과 링크될 클래스임을 알려준다
- 또한 자주 사용될 get set 메소드들은 직접 코드로 구현하는 것이 아닌, Lombok이 제공하는 @Getter와 @Setter 어노테이션을 이용했다 (이러면 get, set 메소드를 사용할수 있다)
- 각각의 id 속성에는 @id 어노테이션을 이용하여 기본키(Primary Key)임을 알렸고
- @GeneratedValue를 이용하여 id값을 부여하지 않아도 자동으로 값이 입력되도록 했다.
- 또한 외래키를 매핑하기 위해 @JoinColumn 어노테이션을 사용했다.
다음 게시글에서는 Repository를 구현해보도록 하겠다!