본문 바로가기

전체글236

양방향 관계 맵핑 먼저 연관관계의 주인을 선정해야 한다. 단순하게 외래 키를 관리하는 쪽이 주인이다. 즉 ManyToOne 관계일 경우 Many쪽이 주인이다. 이제 차량 출고 도메인과 결제 수단 도메인으로 예시로 정리해보겠다. 차량을 출고하면 결제수단은 현금 or 카드 or 현금+카드일 수 있다. 따라서 출고와 결제수단은 1대 다의 관계를 갖는다. 결제수단 도메인(Payment) @ManyToOne(fetch = LAZY, cascade = ALL) @JoinColumn(name = "release_id") private Release release; @ManyToOne: 다대1관계, 결제수단이 외래키를 관리한다. @JoinColumn(name = "release_id"): Release 도메인의 ID 필드 column명.. 2021. 5. 20.
ExceptionHandler 사용하기 Excepton 발생 시 @ExceptionHandler를 사용하여 응답 처리를 할 수있다. 사용자 정의 Exception 클래스 생성 차량을 매입할때 이미 존재하는 차량 번호일 경우 발생시킬 Exception 클래스를 생성한다. RunTimeException을 상속받고 생성자를 만들어 준다. public class DuplicatedCarNumberException extends RuntimeException { public DuplicatedCarNumberException() { } public DuplicatedCarNumberException(String message) { super(message); } public DuplicatedCarNumberException(String message.. 2021. 5. 13.
REST API 응답 한글깨짐 해결방법 테스트 중에 응답 내용에 한글이 깨지는 현상이 발생했다. 아래 로그를 보면 header에 utf-8 설정이 되어있지 않은 것을 확인할 수 있다. MockHttpServletResponse: Status = 400 Error message = null Headers = [Content-Type:"application/json"] Content type = application/json Body = {"message":"이미 ë§¤ìž ë˜ì–´ìžˆëŠ” ì°¨ëŸ‰ìž ë‹ˆë‹¤. 차량번호: 04구4716"} Forwarded URL = null Redirected URL = null Cookies = [] 해결 방법 application.properties에 설정 추가 # .. 2021. 5. 13.
Errors 객체를 ResponseEntity body에 담아서 JSON 형태로 리턴하기 스프링의 @Valid를 사용하면 유효성 검증에 실패한 내용이 Errors에 담긴다. @PostMapping("api/car") public ResponseEntity saveCar(@RequestBody @Valid CarSaveRequestDto requestDto, Errors errors) { log.info("\n\n=== saveCar start ===\n* requestDto: " + requestDto + "\n"); if (errors.hasErrors()) { return ResponseEntity.badRequest().body(errors); } CarSaveResponseDto responseDto = carService.save(requestDto); log.info("\n\n==.. 2021. 5. 12.