스프링부트 13

스프링부트 유효성 검사와 예외처리 - 예외 처리

예외 처리 애플리케이션 개발 과정에서 다양한 오류와 예외 상황에 직면하게 됩니다. 이를 처리하기 위해 자바는 try/catch 및 throw 구문을 제공합니다. 스프링 부트는 이보다 진화된 예외 처리 메커니즘을 제공하여 개발자에게 더 편리하게 예외 처리를 도와줍니다. 예외 (Exception) 애플리케이션의 정상적인 동작을 방해하는 상황을 나타냅니다. 예를 들면, 잘못된 입력값, 유효하지 않은 참조 값 등이 있습니다. 예외는 개발자가 코드 내에서 직접 처리할 수 있으므로, 적절한 코드 설계와 로직을 통해 미리 예상하고 처리할 수 있습니다. 에러 (Error) 에러는 예외와 비슷한 개념으로 여겨지는 경우가 많지만, 실제로는 근본적으로 다른 현상입니다. 에러는 주로 자바의 가상머신 (JVM)에서 발생하며, ..

BACKEND/SPRING 2023.08.27

스프링부트 유효성 검사와 예외처리 - 유효성 검사

애플리케이션의 유효성 검사(validation)는 중요한 부분입니다. 사용자로부터 입력받은 데이터의 유효성을 검사하여 데이터의 정확성, 안정성, 및 신뢰성을 보장하려고 합니다. 스프링 부트(Spring Boot)에서도 유효성 검사를 위한 다양한 기능과 라이브러리(예: JSR 380: Bean Validation 2.0)를 제공합니다. 일반적인 애플리케이션 유효성 검사의 문제점. 데이터 검증 로직의 문제점 분산된 로직: 계층별로 유효성 검사를 진행하면 검증 로직이 각 클래스별로 분산되어 있어 관리하기 어렵습니다. 중복된 코드: 검증 로직에는 의외로 중복이 많이 발생하여, 여러 곳에서 유사한 기능의 코드가 반복적으로 나타날 수 있습니다. 검증 코드의 길이: 검증해야 할 값이 많아지면, 검증 로직이 길어져 코..

BACKEND/SPRING 2023.08.27

Spring Data JPA 활용 - JPA Auditing 적용

Spring Data JPA의 Auditing 기능은 엔터티의 변경시점에 언제, 누가 엔터티를 생성, 변경했는지에 대한 정보를 자동으로 등록할 수 있게 도와줍니다. JPA Auditing의 주요 기능 @CreatedBy, @LastModifiedBy: 엔터티가 생성 또는 수정될 때의 수정자 정보를 기록 @CreatedDate, @LastModifiedDate: 엔터티가 생성 또는 수정된 시간을 기록 @EnableJpaAuditing: Spring Data JPA의 Auditing 기능을 활성화 JPA Auditing 적용 방법 Auditing을 활성화 메인 애플리케이션 클래스 또는 설정 클래스에 @EnableJpaAuditing 애노테이션을 추가합니다. @SpringBootApplication @Enab..

BACKEND/SPRING 2023.08.13

Spring Data JPA 활용 - 정렬과 페이징 처리

Spring Data JPA는 정렬과 페이징 처리를 간단하게 지원합니다. PagingAndSortingRepository를 상속받으면 기본적인 페이징과 정렬 기능을 사용할 수 있습니다. 정렬 처리하기 일반적인 쿼리문에서 정렬을 사용할 때는 ORDER BY 구문을 사용합니다. 쿼리 메서드로 정렬 기능에 동일한 키워드가 사용됩니다. public interface UserRepository extends JpaRepository { List findByNameOrderByNumberAsc(String name); List findByNameOrderByNumberDesc(String name); } // 서비스나 컨트롤러에서 사용 예시 userRepository.findByName("John"); Spring..

BACKEND/SPRING 2023.08.13

Spring Data JPA 활용 - JPQL과 쿼리 메서드

Spring Data JPA를 사용하면 데이터 접근 코드를 간소화하고 개발 생산성을 향상시킬 수 있습다. JPQL (Java Persistence Query Language)는 엔터티 객체를 중심으로 데이터를 쿼리하기 위한 언어입니다. 동적 쿼리 Spring Data JPA는 메소드 이름을 기반으로 쿼리를 생성하는 기능을 제공합니다. 이때 사용되는 메서드 이름의 주제 키워드를 이용하면 쿼리를 자동으로 생성할 수 있습니다. 쿼리 메서드의 생성 쿼리 메서드는 크게 동작을 결정하는 주제와 서술어로 구분하며 키워드로 쿼리의 주제를 정하먀 By는 서술어의 시작을 나타내는 구분자 역할을 합니다. // (리턴타입) + (주제 + 서술어(속성)) 구조의 메서드 List findByName(String name); 쿼리..

BACKEND/SPRING 2023.08.13

데이터 베이스 연동 - ORM, JPA

ORM (객체 관계 매핑) 스프링 부트(Spring Boot)에서 ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 매핑하는 프로그래밍 기술입니다. 스프링 부트에서는 JPA(Java Persistence API)를 주로 사용해 ORM을 구현하고, Hibernate는 JPA의 대표적인 구현체 중 하나입니다. 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법을 의미하며 데이터 베이스와 애플리케이션 클래스와의 불일치와 제약사항을 해결해 줄 수 있는 역할입니다. 장점 개발 생산성 향상: SQL 쿼리를 직접 작성하지 않아도 되므로 개발 속도가 빨라집니다. 대부분의 ORM 프레임워크는 CRUD 연산을 위한 ..

BACKEND/SPRING 2023.08.06

05. 로깅 라이브버리 - Logback

Logging 로깅(logging)은 컴퓨터 프로그램이나 시스템이 실행 중에 발생하는 이벤트나 데이터를 시간에 따라 순차적으로 기록하는 것을 의미합니다. 이런 로그 데이터는 텍스트 파일, 데이터베이스, 시스템 이벤트 로그 등에 저장될 수 있습니다. 로깅의 목적으로는 디버깅 소프트웨어 개발 과정에서 버그를 찾아내거나 시스템의 비정상적인 동작을 분석하는데 도움이 됩니다. 시스템 모니터링 로그를 통해 시스템의 상태를 모니터링하고, 성능 문제나 잠재적인 문제를 조기에 발견할 수 있습니다. 보안과 감사 트레일 로그는 누가 시스템에 접근했는지, 어떤 작업을 수행했는지에 대한 기록을 제공하므로, 보안 위반을 추적하거나 법적 요구사항을 충족하는데 필요한 감사 트레일(audit trail)을 제공합니다. 사건 복구 시스..

BACKEND/SPRING 2023.07.30

05. REST API 명세를 문서화 하는 방법 - Swagger

API 명세서 API를 개발하면 명세를 관리해야 합니다. 명세란 해당 API가 어떤 로직으로 수행하는지 설명하고 이 로직을 수행하기 위해 어떤 값을 요청하며, 이에 따른 응답값으로 무엇을 받을 수 있는지 정리한 자료입니다. API 개발과정에서 계속 변경되므로 작성한 명세 문서도 주기적인 업데이트가 필요하며 명세 작업은 오랜 시간이 걸릴 수 있기 때문에 이를 해소할 수 있는 것이 바로 Swagger 입니다. Swaager 사용하기 build.gradle에 의존성을 추가해 줍니다. implementation 'io.springfox:springfox-boot-starter:3.0.0' config 라는 패키지를 만들고 하위에 SwaggerConfiguration 클래스를 만들어 줍니다. 아래와 같이 설정해 ..

카테고리 없음 2023.07.30

05. API를 작성하는 다양한 방법 - DELETE API 만들기

DELETE API 만들기 DELETE API는 웹 애플리케이션 서버를 거쳐 데이터베이스 등의 저장소에 있는 리소스를 삭제할 때 사용합니다. 서버에서는 클라이언트로부터 리소스를 식별할 수 있는 값을 받아 데이터베이스나 캐시에 있는 리소스를 조회하고 삭제하는 역할을 수행합니다. 이때 컨트롤러를 통해 값을 받는 단계에서는 간단한 값을 받기때문에 GET 메서드와 같이 URI 에 값을 넣어 요청을 받는 형식으로 구현합니다. @PathVariable과 @RequestParam을 활용한 DELETE 메서드 구현 @PathVariable을 사용하면 URI에 포함된 값을 받아 로직을 처리할 수 있습니다. package com.springboot.api.controller; import org.springframewor..

BACKEND/SPRING 2023.07.30

05. API를 작성하는 다양한 방법 - POST, PUT API 만들기

POST API 만들기 POST API는 웹 애플리케이션을 통해 데이터베이스 등의 젖아소에 리소르를 정할 때 사용되는 API입니다. POST API는 저장하고자 하는 리소스나 값을 HTTP body에 담아 서버에 전달합니다. 그래서 URI가 GET API에 비해 간단합니다. controller 패키지에 PostController를 만들어줍니다. 현재 방식은 임의의 방식으로 실무에선 API 메서드 별로 컨트롤러를 생성하지 않고 서비스마다 생성해 관리합니다. @RequestMapping으로 구현하기 POST API에서 @RequestMapping을 사용하는 방법은 GET API와 유사합니다. package com.springboot.api.controller; import org.springframework..

BACKEND/SPRING 2023.07.30