스프링 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://lng1982.tistory.com/300
이런 글도 찾게 되어 시도해보았으나 나의 경우에는 맞지 않는 해결법이었던 듯..?
++ 그리고 나중에 좀 더 자세히 보고 싶어서 찾아놓은 블로그도 남겨놔야징
https://milenote.tistory.com/122
'T.I.L. :: Today I Learned > 항해99 14기 본과정' 카테고리의 다른 글
Day 24. 중요한 것은 꺾이지 않는 마음 (0) | 2023.04.26 |
---|---|
Day 23. 스프링 시큐리티, 너 도대체 뭐야 (0) | 2023.04.25 |
Day 21. 봄이 오고 Spring도 왔ㄷㅏ... : ) (0) | 2023.04.23 |
Day 20. 1년만에 자바의 정석 다 봤다 ~~ Yay~~~~ (0) | 2023.04.22 |
Day 19. 벽을 넘어서면 그 벽은 계단이 된다. (0) | 2023.04.21 |