Spring Boot/MVC

    [Spring MVC] JDBC 기반 DB 계층

    [Spring MVC] JDBC 기반 DB 계층

    JDBC(Java Database Connectivity)란? Java 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장 및 업데이트 하거나, 반대로 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 spec이다. 개발자는 Java 애플리케이션에서 데이터베이스에 액세스하기 위해 JDBC API를 사용하여 다양한 데이터베이스(Oracle, MySQL 등..)와 연동할 수 있다. Spring에서는 Spring Data JDBC, JPA 같은 기술을 제공하기 때문에 JDBC API를 직접 사용하는 것보다 더 편리하게 데이터 엑세스 로직을 구현할 수 있다. JDBC의 동작 흐름 JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 액..

    [Spring MVC] 예외(Exception) 던지기(throw)

    체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) 애플리케이션에서 발생하는 예외(Exception)는 크게 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception)로 구분할 수 있다. 체크 예외는 발생한 예외를 잡아서(catch) 체크(cheak)한 후에 해당 예외에 대한 구체적인 처리를 하는 예외이다. 대표적인 체크 예외로는 ClassNotFoundException 언체크 예외는 발생한 예외를 잡은(catch) 후에 해당 예외에 대한 어떤 처리를 할 필요가 없는 예외이다. 대표적인 언체크 예외로는 NullPointerException, ArrayIndexOutOfBoundsException RuntimeExceptio..

    [Spring MVC] 예외 처리(@ExceptionHandler, @RestControllerAdvice)

    애플리케이션에서 만날 수 있는 예외는 다음과 같다. 클라이언트 요청 데이터에 대한 유효성 검증(Vaildation)에서 발생하는 예외 서비스 계층의 비즈니스 로직에서 던져지는 의도된 예외 웹 애플리케이션 실행 중에 발생하는 예외(RuntiomException) 애플리케이션에 문제가 발생하거나, 유효성 검증에 실패할 경우 예외(throw) 처리를 유도할 수 있다. @ExceptionHandler 예외 발생 시 Response Body에 에러메세지가 클라이언트에게 전송되지만, 어떤 예외가 발생한지 알 수 없다. @ExceptionHandler를 메서드에 추가하면 클라이언트에게 더 상세한 에러메세지를 전달할 수 있다. @ExceptionHandler // MethodArgumentNotValidExceptio..

    [Spring MVC]Service 계층 DI 연동, Mapper 사용 Entity 매핑

    Service 계층이란? 서버의 구조는 API 계층, Service 계층, Data Access 계층으로 3 계층으로 이루어져 있고, 각 계층간에 데이터 전달이 필요하다. 이 중에서 Service 계층은 API 계층에서 전달 받은 요청 데이터를 기반으로 실질적인 비즈니스 요구사항을 처리하는 계층이다. API 계층과 Service 계층의 연동? API 계층과 Service 계층을 연동한다는 의미는, API 계층의 Controller 클래스와 서비스 계층의 Service 클래스가 메서드 호출을 통해 상호 작용한다는 것을 의미한다. DI를 통한 Service 계층과 API 계층 연동 && Mapper를 이용한 DTO 클래스와 Entity 클래스 매핑 Spring DI(Dependency Injection)..

    [Spring MVC] DTO(Data Transfer Object), Validation

    DTO(Data Transfer Object)란? DTO는 Data Transfer Object의 약자로 마틴 파울러(Martin Fowler)가 ‘Patterns of Enterprise Application Architecture’ 라는 책에서 처음 소개한 엔터프라이즈 애플리케이션 아키텍처 패턴의 하나이다. 클라이언트에서 서버 쪽으로 전송하는 요청 데이터, 서버에서 클라이언트 쪽으로 전송하는 응답 데이터의 형식으로 데이터 전송이 이루어진다. 이 구간에서 DTO를 적용할 수 있다. DTO가 필요한 이유 클라이언트의 Request Body를 하나의 객체로 모두 전달 받을 수 있기때문에 코드 자체가 간결해진다. Request Body의 데이터 유효성(Validation) 검증이 단순해진다. DTO가 적용되..

    [Spring MVC] API-Controller

    [Spring MVC] API-Controller

    Controller 클래스 설계 및 구조 생성 API 계층은 클라이언트의 요청을 직접적으로 전달 받는 계층이다. Controller 클래스는 Spring MVC에서 클라이언트 요청의 최종 목적지이다. 패키지 구조 생성 Spring Boot 기반의 애플리케이션에서 주로 사용되는 Java 패키지 구조는 기능 기반 패키지 구조(Package-by-feature)와 계층 기반 패키지 구조(Package-by-layer)가 있다. 기능 기반 패키지 구조(Package-by-feature) 말 그대로 애플리케이션의 패키지를 애플리케이션에서 구현해야 하는 기능을 기준으로 패키지를 구성하는 것이다. 회원을 관리하기 위한 회원 기능과 커피를 관리하기 위한 커피 기능을 패키지로 나누었고, 패키지 안에 레이어 별 클래스들이..

    [Spring MVC] API 아키텍처

    [Spring MVC] API 아키텍처

    Spring MVC란? Spring 모듈 중에서 웹 계층을 담당하는 서블릿(Servlet) API으로 클라이언트를 처리하는 모듈인 Spring-webmvc가 있다. Spring Web MVC를 줄여서 Spring MVC라고 부르고 있고, 웹 프레임워크의 한 종류이기 때문에 Spring MVC 프레임워크라 불린다. Moder Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 받으면 요청 사항을 처리하기 위한 작업을 한다. 이렇게 처리한 결과 데이터를 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라고 한다. 클라이언트의 요청 사항을 구체적으로 처리하는 영역을 서비스 계층(Service Layer)라고 하며, Java 코드로 구현한 것을 비즈니스 로직이라고 한다. Vie..