우주먼지
Spring JDBC
Framework/Spring 2022. 10. 27. 12:28

💡 JDBC JDCB API 동작 흐름 JDBC 드라이버 로딩 - DriveManager 클래스 통해서 로딩 Connection 객체 생성 - DriverManagerfmf 통해 DB와 연결되는 세션인 객체 생성 Statement 객체 생성 - 작성된 쿼리문을 실행하기 위한 객체로, 객체 생성 후 정적 퀴리 문자열을 입력으로 가짐 쿼리 실행 - 생성된 Statement 객체를 이용해서 쿼리 실행 ResultSet 객체로부터 데이터 조회 - 실행된 쿼리문에 대한 데이터 Set ResultSet -> Statement -> Connection 순으로 객체 Close Connection Pool (DBCP) Connection 객체 생성은 리소스를 많이 요구한다. 그래서, 미리 Connection 객체를 생성..

article thumbnail
RestControllerAdvice (Exception 공통화)
Framework/Spring 2022. 10. 25. 21:40

💡 Throw Exception 예외의 구분 어플리케이션의 발생예외는 크게 체크예외, 언체크예외로 구분 체크예외 : 발생한 예외를 잡고(catch) 체크 후, 예외 복구&회피 등 구체적인 처리 필요 ex: ClassNotFoundException 언체크예외 : 예외를 잡고(catch) 따로 처리가 필요하지 않음 ex: NullPointerException, ArrayIndexOutOfBoundsException 휴먼에러로 인해 발생하는 오류는 전부 RuntimeException을 상속한 예외들임 자바는 많은 RuntimeException을 지원하지만 직접 예외를 만들어야 하는 경우도 있음 의도적으로 예외 throw & catch 하기 Custom Exception(enum) 생성 특정 계층에서 사용할 클..

article thumbnail
Exception Handler -> RestControllerAdvice
Framework/Spring 2022. 10. 25. 14:08

💡 Exception Handler 예외 발생 가능성이 있는 상황 클라이언트 요청 데이터에 대한 유효성 검증에서 발생하는 예외 서비스 계층의 비즈니스 로직에서 던져지는 의도된 예외 런타임 예외 UserController에 Exception Handler 적용 RequestBody에 유효하지않은 데이터 요청이 오면, 유효성 검증에 실패 유효성 검증에 실패시 내부적으로 던져진 예외인 MethoddArgumentNotValidException을 handleException() 이 받음 그 후, MethodArgumentNotValidException 개체에서 getBindingResult(), getFieldErrors() 를 통해, 발생한 에러 정보를 리스트로 확인 가능 객체에서 얻은 정보인 filedErr..

article thumbnail
Web MVC Service Layer
Framework/Spring 2022. 10. 24. 14:07

💡 API Service 연동 실습 API 계층에서 전달받은 DTO 객체를 서비스 계층의 도메인 엔티티 객체로 변환 1. 계층별 관심사 분리 2. 코드 구성의 단순화 3. Rest API 스펙의 독립성 확보 리팩터링 포인트 1. 컨트롤러의 핸들러가 DTO를 엔티티로 변환하는 작업까지 하고있다 DTO를 엔티티로 변환하는 작업을 다른 클래스에게 변환 위임 = membermapper 컨트롤러는 이제 두 클래스의 변환작업을 안함 (역할 분리) 2. 엔티티 클래스의 객체를 클라이언트의 응답으로 전송함으로써 계층간 분리 X 클라이언트 응답을 엔티티 클래스로 전송하지말고, 엔티티의 객체를 DTO의 객체로 바꿔줌 membermapper가 엔티티를 dto로 변환해줌으로써 서비스에있는 엔티티를 apu에서 직접 사용하는 문..

정규표현식
Framework/Spring 2022. 10. 21. 12:51

💡 정규표현식 ‘^’은 문자열의 시작을 의미합니다. ‘$’는 문자열의 끝을 의미합니다. ‘*’는 ‘*’ 앞에 평가할 대상이 0개 또는 1개 이상인지를 평가합니다. ‘\s’는 공백 문자열을 의미합니다. ‘\S’ 공백 문자열이 아닌 나머지 문자열을 의미합니다. ‘?’는 ‘?’ 앞에 평가할 대상이 0개 또는 1개인지를 의미합니다. ‘+’는 ‘+’ 앞에 평가할 대상이 1개인지를 의미합니다. Flags global = g 매칭되는 다수의 결과값 기억 multi line = m single line = s unicode = u sticky = y case insensitive = i Character 의미 | 또는 () 그룹 [] 문자셋, 괄호안의 어떤 문자든 [^] 부정 문자셋, 괄호안의 어떤 문가 아닐때 (?:..

article thumbnail
DTO (Data Transfer Object)
Framework/Spring 2022. 10. 21. 10:46

💡 DTO (Data Transfer Object) HTTP Method별로 or Request, Response 별로 받아올 필드값(Request)과 보내줄 필드값(Response)을 잘 생각해서 필드값 설정 Mapstruct로 자동매핑이 어려운 필드의 경우 서비스클래스에서 비즈니스로직으로 처리하자 DTO 클래스 = 요청 데이터를 하나의 객체로 전달받는 역할 DTO를 적용하기 전엔 요청데이터를 @RequestParam을 통해 일일이 받았지만, 데이터가 많아질수록 @RequestParam의 개수도 많아질 것이다. DTO 클래스를 적용함으로써 코드의 간결성을 충족시킬 수 있다. DTO를 쓰는 가중 중요한 이유는 HTTP 요청의 수를 줄여 비용절감을 하는 것 아래에서 볼 예시는 DTO, 데이터 유효성 검증을..

article thumbnail
Spring MVC & Rest API URI 작성 규칙
Framework/Spring 2022. 10. 20. 10:48

💡 Spring Web MVC Spring의 모듈중 하나로 Suvlet API를 기반으로 웹계층을 담당 클라이언트의 요청을 편리하게 처리해주는 프레임워크 서블릿(Servlet)이란? 서블릿에 대해서는 ‘Spring Framework을 배워야 하는 이유’ 챕터에서 잠깐 언급을 한적이 있다. 서블릿은 클라이언트의 요청을 처리하도록 특정 규약에 맞추어서 Java 코드로 작성하는 클래스 파일이다. 그리고 아파치 톰캣(Apache Tomcat)은 이러한 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너(Servlet Container) 중 하나임. Model Spring MVC 에서 'M' 에 해당 처리한 작업의 결과 데이터를 의미함 View Spring MVC 에서 'V'에 해당 화면에 보여지..

검색 태그