Spring/Spring Data JPA Tutorial(14)
-
[Spring Data JPA Tutorial] 14. Swagger v3 상세설정 및 request 유효성 검증
필요성 OpenAPI doc 관련 Annotation operation 그룹 설정: @Tag Schema 설정 : @Schema 상세 정보 설정 : @Operation response 설정 : @ApiResponse parameter 설정 : @Parameter 기존 api에 적용하기 @Tag 설정 @Schema 및 유효성 검증 설정 @Operation 설정 @ApiResponse 설정 @Parameter 설정 Exception 처리 보완 1. 필요성 Swagger를 이용하여 API를 자동 웹문서화 하였고, Response로 받게될 Example Value 형태까지 맞췄봤습니다. 그러나, 아직 Swagger 페이지 만으로 api 기능을 한눈에 알아보기 어렵습니다. 각 operation들에 대한 부연설명도..
2022.04.20 -
[Spring Data JPA Tutorial] 13. Response 전용 DTO 클래스 이용하기
Response 전용 DTO 정의의 필요성 사전 작업 Response 용 DTO 정의 조회 api 수정 user 전체 조회 api user 단건 조회 api store 전체 조회 api store 단건 조회 api Response 결과 1. Response 전용 DTO 정의의 필요성 LazyInitializationException 해결하기 2. @OneToMany 시간 때에, @OneToMany 연관관계를 알아보기 위해, User 엔티티의 stores 필드에는 @JsonIgnore설정을 제거했고, Store 엔티티에서는 순환참조 에러를 방지하기 위해 user 필드값에 @JsonIgnore 설정을 추가했습니다. 그러나, 기존의 방식은 몇가지 문제점이 있습니다. User 조회 api에서 stores 정보를..
2022.04.18 -
[Spring Data JPA Tutorial] 12. @ControllerAdvice와 @ExceptionHandler를 이용한 전역 Error Handling
전역 Error Handling의 필요성 전역 예외처리 설정 커스텀 RuntimeException 정의 @ControllerAdvice를 이용한 전역 Error Handling Service, Controller 메서드 수정 user 단건 조회 user 추가 user 수정 user 삭제 변경화면 단건조회 api Example Value 개선 익셉션 발생시 Response 1. 전역 Error Handling의 필요성 이전시간에 만들었던 API에서 아쉬웠던 점이, 존재하지 않는 사용자나 가게를 조회할 때에 BaseResponse를 내보내도록 정의하여, Swagger 상에 실질적인 사용자 단건조회 또는 가게 단건조회의 response 형태를 Swagger 웹문서에서 미리보기 하기 어렵다는 점이었습니다. 그 ..
2022.04.18 -
[Spring Data JPA Tutorial] 11. Generic을 이용하여 Response 일반화하기
Response 타입 개선의 필요성 Response 클래스 정의 MessageUtils BaseResponse DataResponse 변경하기 user 단건 조회 user 수정 user 삭제 user 추가 user 전체 조회 store 단건 조회 store 전체 조회 변경된 Swagger 화면 및 추후 개선해야할 사항 1. Response 타입 개선의 필요성 이전 시간에 만들었던 api들의 Response 타입은 모두 Map 이었습니다. Map으로 만드는 것이 기능상으로 문제될 것은 없지만, OpenAPI 웹문서 상에 response 응답값에 대한 도움을 받기 어렵다는 단점이 있습니다. Swagger 웹 페이지로 API 문서를 대체하기 위해서는, Swagger 웹페이지만으로도 api 형태를 최대한 쉽게 ..
2022.04.17 -
[Spring Data JPA Tutorial] 10. LazyInitializationException 해결하기 2. @OneToMany
사전작업 Entity 수정 User Store api 테스트 LazyInitializationException 해결 @JsonIgnore Transactional 내부에서 연관관계 미리 조회 권장 Entity 설정에서 FetchType.EAGER로 설정 EntityGraph fetch join N+1 문제 해결 Transactional 내부에서 연관관계 미리 조회 Service batch size 미적용시 batch size 적용 @BatchSize default_batch_fetch_size 권장 query Entity 설정에서 FetchType.EAGER로 설정 EntityGraph fetch join 1. 사전작업 이전 포스팅에 이어서 이번 시간에는 1:N 연관관계 필드값을 가지는 엔티티 조회에서 ..
2022.04.15 -
[Spring Data JPA Tutorial] 9. LazyInitializationException 해결하기 1. @ManyToOne
사전작업 columnDefinition 제거 Entity 정의 Store User store 조회 api 생성 Repository Service Controller 테스트 데이터 api 테스트 LazyInitializationException 해결 @JsonIgnore Transactional 내부에서 연관관계 미리 조회 Entity 설정에서 FetchType.EAGER로 설정 EntityGraph fetch join N+1 문제 해결 Transactional 내부에서 연관관계 미리 조회 Entity 설정에서 FetchType.EAGER로 설정 EntityGraph fetch join 이전시간에 만든 user 조회 api에서 response에 Entity 객체를 그대로 담았습니다. 기존에 만들었었던 Us..
2022.04.14