항해99 3기

[TIL] 2021.10.21 클론 프로젝트 진행중

na_o 2021. 10. 21. 15:57
728x90

* 내가 작성한 게시글 목록 조회 구현

 

* DB 구조 변경

    - 게시물 삭제 시 게시물에 달려있던 댓글들도 같이 삭제되어야함

    - https://blog.woniper.net/264

 

[JPA] @OneToMany / @ManyToOne, 1:N / N:1 관계 매핑

JPA란 무엇인가? JavaSE 환경에서 JPA 설정 및 CRUD JavaEE 환경(Spring)에서 JPA 설정 및 CRUD @OneToOne, 1:1 관계 매핑 @OneToMany / @ManyToOne, 1:N / N:1 관계 매핑 @ManyToMany, N:M 관계 매핑 Entity 객체..

blog.woniper.net

@Getter
@Setter
@NoArgsConstructor
@Entity
public class Posting extends Timestamped {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long postingId; // 게시글 고유 번호

    @Column(nullable = false)
    private String userName; // 게시글 작성자의 닉네임, 중복 허용X

    @Column(nullable = false)
    private String title; // 게시글 제목

    @Column(nullable = false)
    private String content; // 게시글 내용

    @Column(nullable = false)
    private String imageFile; // 메인페이지에서 보여질 게시글의 썸네일 이미지(유저가 게시글에 등록한 이미지)

    @OneToMany(mappedBy = "post", fetch = FetchType.LAZY,cascade = CascadeType.ALL)
    private List<Comment> comments;

}
    @OneToMany(mappedBy = "post", fetch = FetchType.LAZY,cascade = CascadeType.ALL)
    private List<Comment> comments;

mappedBy의 "post"는 Comment 엔티티의 컬럼으로 정의되어있음

Comment 엔티티와 연관을 지어줌

 

 

@Setter
@Getter // get 함수를 일괄적으로 만들어줍니다.
@NoArgsConstructor // 기본 생성자를 만들어줍니다.
@Entity // DB 테이블 역할을 합니다.
public class Comment extends Timestamped{
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long id;
    // 반드시 값을 가지도록 합니다.
    @Column(nullable = false)
    private String userName;

    @Column(nullable = false)
    private String comment;

    @Column(nullable = false)
    private Long postingId;


    @ManyToOne(fetch = FetchType.LAZY,cascade =CascadeType.ALL )
    @JoinColumn(name = "postId")
    private Posting post;
}
    @ManyToOne(fetch = FetchType.LAZY,cascade =CascadeType.ALL )
    @JoinColumn(name = "postId")
    private Posting post;

post 변수는 Posting 엔티티의 commentList 컬럼과 연관되어있음

name = "postId" 는 Join한 컬럼의 이름을 정의시켜주는 것 뿐임

연관관계를 짓는 행위와 관련 없음

CASCADE를 조건 걸어주면서 게시물이 삭제될 때 댓글도 같이 삭제되도록 설정함

 

 

 

* 알고리즘 문제 풀기

    - https://github.com/NayoungBae/oneday-onesolve/blob/nayoung/java-algorithm/10-21%20WordInTheSentence.md

 

GitHub - NayoungBae/oneday-onesolve: JAVA로 푸는 알고리즘 1일 1문제

JAVA로 푸는 알고리즘 1일 1문제. Contribute to NayoungBae/oneday-onesolve development by creating an account on GitHub.

github.com