본문 바로가기
T.I.L. :: Today I Learned/항해99 14기 본과정

Day 22. 자도 자도 또 자고 싶어요

by DaSsom 2023. 4. 24.

개졸려어어어어

 

스프링 3레벨 과제 완료 !!!!!!!!!!!!!!!!

 

3레벨의 주요한 요구사항은 "댓글"이 추가되었다는 것.

일단 ERD는 이렇게 설계를 해보았다. User는 한 사람이 글 여러개, 댓글 여러개를 쓸 수 있기 때문에 1:N 연관관계로 설정했고, 게시글 하나에 댓글이 여러개 달릴 수 있어서 여기도 1:N 관계를 설정해주었다. 

 

그리고 고민했던 부분은, 엔티티 컬럼에 어떤 어노테이션을 붙여주어야 하는가 였다.

일단 댓글 엔티티에 `@ManyToOne` 어노테이션으로 위에서 말한 연관관계를 설정하고, `@JoinColum`이라는 어노테이션을 사용해주었다. 이게 외래키를 설정해준건가? 싶은데 아무튼 이렇게 관계를 맺어주었다. 기본적인 설정은 이 정도로 해두었고 ..~

 

`@JsonManagedReference` 어노테이션과, 

    @ManyToOne
    @JoinColumn(name = "post_id", nullable = false)
    @JsonIgnore
    private Post post;


    @ManyToOne
    @JoinColumn(name = "user_name", nullable = false)
    @JsonManagedReference
    private Users users;

 

post 엔티티에 `@JsonBackReference` 어노테이션을 붙여주는게 관건이었다.

    @OneToMany(mappedBy = "post", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @OrderBy("id asc")
    @JsonBackReference
    private List<Comment> comments;

 

이 어노테이션들을 붙여주지 않으면 StackOverFlow가 발생한다. 

https://k3068.tistory.com/32

 

[JPA] 순환참조 해결하기(JackSon 동작원리)

이번에 개인 프로젝트를 진행 함에 있어 1:N , N:1 양방향 관계에서 발생한 순환 참조 이슈를 겪어 포스팅합니다. 순환 참조가 일어나는 이유부터 같이 알아봅시다. Spring boot는 @ResponseBody를 선언

k3068.tistory.com

구글링을 하다가 이 블로그 글을 보게되었고 그래서 위의 어노테이션을 붙여주니 내가 원하는대로 데이터가 불러와졌다.

 

 

https://lng1982.tistory.com/300

 

20. [JPA] lombok 사용 시 주의사항

엔티티 클래스에 lombok을 사용하면 StackOverflowError 오류가 발생할 수 있다. 다음과 같은 엔티티 연관 관계가 있다고 하자.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535

lng1982.tistory.com

이런 글도 찾게 되어 시도해보았으나 나의 경우에는 맞지 않는 해결법이었던 듯..?

 

 

 

++ 그리고 나중에 좀 더 자세히 보고 싶어서 찾아놓은 블로그도 남겨놔야징

https://milenote.tistory.com/122

 

[ JPA ] 8. 커스텀 쿼리 사용

Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 더보기 1. Repository interface 메서드 - 1 2. Query Method 정의 및 실습 - 2 3. Entity 기본 속성 - 3 4. Entity Listener - 4 5-1. E

milenote.tistory.com