Back-end
-
[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는 인터페이스인데, 그럼 해당 인터페이스의 구현체는 무엇일까..
-
[SpringBoot] 서버에서 사용자 입력 값과 Request Body를 Validation하는 2가지 방법Back-end/TIL 2022. 4. 4. 15:45
📌 Validation이 필요한 이유 의도적으로 이상한 값으로 서버에 요청을 보낼 수 있기 때문에 프론트와 서버에서 둘다 해줘야 한다. 회사 코드를 보니 이메일이나 전화번호 입력 값에 대한 형식을 모두 서버에서도 체크해주었다. (기존에 사이드 프로젝트 할 때는 '입력값은 프론트에서 유효성 검사 해주니까 괜찮겠지' 하고 넘어갔었는데 반성하게 되었다. 다음 사이드 프로젝트에서는 입력값에 대한 서버 유효성 검사도 추가해야겠다) 그렇다면, 어차피 서버에서도 유효성 검사를 해주는데 프론트에서도 하는 이유는? - 서버 부하를 줄여주고, 사용자의 편의성을 위해서이다. - 서버에서의 유효성 검사는 프론트에서의 유효성 검사보다는 느릴 수 밖에 없다. 📌 준비 의존성 추가 dependencies { implementati..
-
[Thymeleaf] form submit시 입력 값 binding 오류Back-end/TIL 2022. 4. 4. 14:53
#오류 상황 API 호출 시 UserSignUpReqDto 클래스의 객체로 사용자가 입력한 값이 바인딩되어야 하는데 안되었다. #원인 및 해결 UserSignUpReqDto 클래스 필드들에 setter 메서드를 만들어주지 않아서 였다. 위의 코드를 보면, *{nickName}의 의미가 setNickName({value})과 동일한 기능이므로, Dto 클래스의 필드별 setter 메서드를 정의해두지 않아서 값이 바인딩되지 않았던 것이다. #Thymeleaf 관련 간단 추가 정리 th:action - form 태그 사용 시 해당 경로로 요청을 보낼 때 사용한다. th:object - form submit을 할 때, form의 데이터가 th:object에 설정해준 객체로 받아진다. 닉네임: 닉네임 th:fie..
-
[JPA] 등장 배경, 사용 이유, 간단 구동 방식Back-end/JPA 2022. 3. 31. 01:02
스터디를 위해 인프런 강의를 들으면서 드디어 JPA에 대한 기본적인 이해를 하게 되었다. 기존에 코드를 짜면서 '정말 데이터베이스에서 이렇게 가져오나..?'라는 의문이 들었던 이유는 JPA를 잘 몰랐기 때문이었다. 이번 스터디를 하면서 제대로 공부해야겠다. 😃 ✔️ JPA 등장 배경 요즘 개발을 할 때 객체 지향 언어 & 관계형 데이터베이스의 조합을 많이 사용한다. 객체를 관계형 데이터베이스에 저장하기 위해서는 아무래도 SQL이 필수적이다. ## SQL 의존적인 개발의 문제점 - 객체 CRUD 혹은 필드 추가시 SQL문을 변경하기 번거롭고, 놓치는 부분이 발생할 수 있다. - 객체와 관계형 데이터베이스 간 패러다임의 불일치 (상속, 연관관계, 데이터 타입, 데이터 식별 방법) → 계속해서 작성해야하는 S..