Programming/Spring

[Spring/스프링] 롤링페이퍼(게시판) 프로젝트 1. Entity 생성

예민한고라니 2022. 3. 22. 21:23

https://coding-zzang.tistory.com/18

 

[Spring/스프링] 롤링페이퍼 프로젝트 0. 프로젝트 설명

"온라인 롤링페이퍼 사이트를 만들어볼까...?" Spring공부를 시작할때 쯔음 , 작은 프로젝트를 만들어보면 좋을 것 같아 시작한 프로젝트이다. 사실 일반 게시판과 거의 비슷하지만, 그냥 게시판보

coding-zzang.tistory.com

전편 입니다


"Entity를 정의하고 코딩해보자!"

entity를 만들기 이전! 우선 관계부터 설정해보겠다.

 

각 entity 사이의 연관관계

크게 회원을 의미하는 member, 각각의 롤링페이퍼를 의미하는 paper그리고 댓글을 의미하는 comment 이렇게 3가지의 entity로 이루어져있다.

이때 한 회원은 1개이상의 페이퍼를 만들어 공유할수 있다 (ex. 숭실 산공 롤링페이퍼 / 목동 종로 롤링페이퍼 이런식)

따라서 MemberPaper는 일대다의 관계를 가진다.

 

마찬가지로 하나의 페이퍼 내에는 여러 친구들로부터 댓글이 달릴수 있다.

따라서 PaperComment 역시 일대다의 관계를 가진다!

 

이제 코드로 나타내보겠다.

 

 

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를 구현해보도록 하겠다!