티스토리 뷰
1️⃣ 💦문제💦
스프링부트3 자바 백엔드 개발 입문
댓글 조회하기에서


기사 조회할 때랑은 다르게 왜 엔티티에서 DTO로 변환하는지 잘 모르겠다..
기사 조회할 때랑 똑같이 그냥 commentRepository.findByArticleId(articleId);만 해주면 되는 것 아닌가?
🌟해결🌟
엔티티를 반환하지 않고 DTO를 반환하는 이유는 엔티티와 응답을 따로 운용하는 것에서부터 출발한다.
엔티티에는 A라는 필드가 있지만, 응답에서 A라는 필드를 보여주고 싶지 않다면 어떨까?
엔티티에는 B라는 값이 없는데, 응답에서는 B라는 값을 보여주고 싶으면 어떻게 해야할까?
이 두 가지를 동시에 충족시켜 줄 수 있는것이 DTO이다.
DTO는 외부로 나가는 데이터를 보안적인 측면에서 관리할 수 있으며,
엔티티에 값이 없더라도, 컨트롤러나 서비스에서 특정 필드를 보고 값을 추가해서 응답으로 줄 수 있다.
2️⃣ 💦문제💦

/ArticleService에서 dto.toEntity

CommentService에서 Comment.createComment
DTO를 엔티티로 만들 때 article은 <dto/articleForm>에서 .toEntity로 만들었는데
왜 댓글 DTO를 엔티티로 만들 때는 <entity/Comment 클래스>에서 새로운 메서드를 만들어서 하지?라는 의문이 들었다. 왜 이 둘의 방법을 다르게 하는 걸까? 특별한 이유가 있을까??
🌟해결🌟
dto로 들어온 Comment의 정보로 comment 엔티티를 만들 수 없기 때문이다.
그래서 Article과 조합하여 comment를 만들고 save하는 코드를 확인할 수 있다!
3️⃣ 💦문제💦
ArticleApiController에서의 메서드의 반환형은 다 Article인데,
왜 CommentApiController에서의 메서드의 반환형은 다 CommentDto일까? 왜 article과는 다르게 굳이 Dto로 반환형을 할까?
🌟해결🌟
이 코드 역시 DTO로 통일되면 좋을거 같다. 최대한 엔티티는 건드리지 않는 것이 좋기 때문!!
4️⃣ 💦문제💦

여기서 this.id의 this는 정확히 무엇을 가리킬까?
책에서는 기존 댓글이라고 하는데, 이를 어떻게 알 수 있을까?

target.patch(dto)이기 때문에 DB에서 findById로 가져와 target변수에 넣어준, 즉 target id를 의미하는 것일까?
🌟해결🌟
정답 !! target의 id다.
this는 객체 자기 자신을 가리킨다.
Comment에 있는 Patch 메서드의 this는 comment 인스턴스를 말한다.
즉 this.id는 Comment.id 인 것. 수정하려는 대상의 id다.
5️⃣ 💦문제💦


mysql 연결 중, 위의 사진과 같이 always->never, create-drop -> update 하면 서버를 껐다 켜고 /articles에 들어갈 때 ddl.sql에서의 데이터들이 다 사라진 (그냥 아무런 데이터가 없는) 화면이 보여야 하는데,

몇번을 껐다 켜도 ddl.sql에서의 데이터들이 그대로 남아있다. 다 지우고 New article로 데이터들을 하나씩 추가하면 id가 7부터 시작하는게 너무 마음에 안드는데... 왜 이렇게 되는 걸까
🌟해결🌟
data.sql에 작성된 데이터는 없으면서, db에 데이터는 계속 쌓고 싶다. --> 이것이 지금 내가 원하는 것이므로
우선 create-drop + never조합으로 실행한번하시고,
그 이후에 never + update 조합으로 하면 된다!
'Spring' 카테고리의 다른 글
스프링부트 커뮤니티 만들기 #2 - 예외처리 (1) | 2024.02.09 |
---|---|
스프링부트 커뮤니티 만들기 #1 - 회원가입, 로그인 (0) | 2024.02.09 |
스프링 부트 자바 백엔드 개발 입문 (1) | 2024.01.14 |
[SPRING]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 섹션7 (AOP) (0) | 2024.01.01 |
[SPRING]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 섹션6 (스프링 DB 접근 기술) (1) | 2023.12.29 |
- Total
- Today
- Yesterday
- 프론트엔드
- 지연로딩
- JPA
- 스프링 커뮤니티
- DP
- 북마크
- 웹 MVC
- 다이나믹 프로그래밍
- 인텔리제이
- 로깅
- SQLD
- SQL
- 백준
- 웹MVC
- 백준 파이썬
- 로그아웃
- 스프링 북마크
- 파이썬
- EnumType.ORDINAL
- 커뮤니티
- 스프링
- 준영속
- 자바
- elasticsearch
- 스프링부트
- SQL 레벨업
- 자바 스프링
- 영속
- 비영속
- 회원탈퇴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |