Back-end/TIL
-
[SpringBoot] JPA Entity와 데이터베이스 간 Enum 매핑Back-end/TIL 2022. 4. 12. 08:58
스타트업 백엔드 인턴으로 근무하며 배운 내용을 까먹지 않도록 하기 위해 정리하는 글입니다. 회사에서 약관 관련 업무를 진행하며 약관 필드의 타입이 Enum으로 설정되어 있었고, 이를 계기로 Enum 저장 및 반환에 대해 찾아보았다. 📌 Enum이란 무엇인가 기존에 상수를 정의할 때 사용하던 final static String 방식을 개선하여 나온 것으로, Enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미한다. 📌 Enum 타입의 Entity 필드를 데이터베이스에 저장하는 방법 방식1. @Enumerated(value = EnumType.{...}) ORDINAL - 해당 Enum의 index 값이 DB에 저장된다. 단점 Enum 클래스에 정의해둔 Enum 값들의 순서가 바뀔 경우 원하는 ..
-
[번외] 서비스 이용약관 처리 방식Back-end/TIL 2022. 4. 12. 08:24
인턴으로 근무하고 있는 회사에서 서비스 이용약관 조회 API를 만들며 이용약관을 처리하는 2가지 방식에 대해 알게 되었다. 방식1. HTML로 처리 이용약관은 법으로 지정되어 있으므로, 반드시 보여줘야 한다. 이때 HTML로 화면을 구성해서 DB 조회를 해오지 않고, 바로 불러오도록 구성한다. 이전 약관내용도 보여줘야 한다. 장점: DB 부하 방지 가능 단점: 해당 페이지를 관리하는 인력이 필요함 흔히 이렇게 처리가 되고, 추구되는 방향이다. 방식2. DB에 약관 내용 저장 약관 조회 페이지 클릭 시 DB로부터 약관 내용을 전달받는다. 단점: 요청이 많아지면 DB 부하가 발생할 수 있다. 개선: 이를 개선할 방법으로는 캐시에 저장하는 것이다. Spring의 경우 redis와의 연결성이 좋아 Service..
-
[SpringBoot] @Valid에 의한 Validation Errors 발생 시 예외 처리 및 반환Back-end/TIL 2022. 4. 4. 17:51
📌 SpringBoot RestController에서 Validation Errors 발생 시 처리 @Valid에 의해 발생한 Validation Error는 기본적으로 Errors 인터페이스 타입의 객체에 담긴다. 따라서 메서드의 인자로 Errors 타입의 객체를 받는지 or 안받는지에 따라 처리가 달라진다. 해당 내용은 아래와 같다. //상황1) Errors 타입 객체를 포함하지 않았을 때 (400 Bad Request 자동 반환) @PostMapping("/user/sign-up") public ResponseEntity userSignUp( @RequestBody @Valid UserDto.UserSignUpReqDto userSignUpReqDto) { ... } //상황2) Errors 타입 ..
-
[SpringBoot] Errors 인터페이스의 구현체와 에러 메시지 저장 위치Back-end/TIL 2022. 4. 4. 16:13
📌 상황 @PostMapping("/user/sign-up") public String userSignUp(@Valid UserDto.UserSignUpReqDto userSignUpReqDto, Errors errors, Model model) { //회원가입 실패 if (errors.hasErrors()) { return "user/sign-up"; } //회원가입 성공 (로그인 완료 페이지로 리다이렉션) return "user/login"; } @Valid에 의해 발생한 Validation Error는 Errors 인터페이스 타입의 객체에 담긴다. 해당 객체에 Error가 존재하는지 체크하여 유효성 검사 처리를 할 수 있다. 📌 Errors는 인터페이스인데, 그럼 해당 인터페이스의 구현체는 무엇일까..