반응형
16:00 ~ 17:00 스탠다드반 JPA 성능 최적화 ( 박성규 튜터님 )
오늘은 게시물 기능에서 구현하지 못했던 댓글기능을 작업하였다.
우선 댓글 담당하셧던 팀원분 께서 생성일과 수정일이 비어져 있어서 새로 다시 댓글을 작성하는 필드를 추가하고, 하나하나씩 수정작업을 하였다.
게시물 기능에서 이제 나는 개인적으로 프로젝트 내에서 어려웠던 것 같았다. 어떻게 구성이 되어야 하는지 말로는 구성이 되는데 댓글에서 로직을 짜는게 너무 어려웠다,, ( GPT에게 도움을 요청 했다.. )
결론적으로는 해결이 됬지만 GPT가 짠 코드를 해석하면서 알아가야 하는 시간을 가져야할 것 같다.
📣 스탠다드반 ( JPA 성능 최적화 )
1️⃣ Entity가 아닌 DTO 반환 및 사용자 입력 DTO로 받기
개요
- API 에서는 Entity를 직접 반환하지 말고 DTO를 사용해야 한다.
- 사용자 입력도 Entity를 직접 바인딩하지 않고 DTO를 통해 받는다.
이유
- Entity를 외부에 노출할 경우 : JPA의 영속성 컨텍스트와 연관된 로직이 노출되어 보안 및 유지보수면에서 문제 발생
- API 스펙이 Entity에 종속 : Entity 변경 시 API 전체에 영향을 주는 등 결합도가 높아짐.
- 직렬화 이슈 : Lazy 로딩된 필드가 프록시 객체로 반환되며, Jackson에서 직렬화 실패 가능성 존재
- 새롭게 알게된점
클래스에 @Transactional ( readonly = true ) 를 선언하면 읽기 전용 모드가 된다.
createdAt, updatedAt은 나중에 확장성을 위해서 BaseEntity로 관리해주는것이 바람직하다.
반응형
'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글
| TIL 39 [ Spring 기초 프로젝트 ( D-day ) - 발표/마무리, 트러블슈팅 ] (0) | 2025.04.14 |
|---|---|
| TIL 38 [ Spring 기초 프로젝트 ( Day 5 ) - 마무리 작업 ( ppt, 대본, ERD/API명세서 리뉴얼) ] (0) | 2025.04.11 |
| TIL 36 [ Spring 기초 프로젝트 ( Day 3 ) - 구현 ( 게시판 - 좋아요 기능연동 ) ] (0) | 2025.04.09 |
| TIL 35 [ Spring 기초 프로젝트 ( Day 2 ) - 구현 (게시판 페이징 작업, 정렬), 깃 기능별 병합 ] (0) | 2025.04.08 |
| TIL 34 [ Spring 기초 프로젝트 ( Day 1 ) - 설계( ERD, API, 와이어프레임 ) ] (0) | 2025.04.07 |