반응형

SpringBoot 34

예외 처리

1. 예외 처리프로그래밍에서 예외(exception)란 입력 값의 처리가 불가능하거나 참조된 값이 잘못된 경우 등 애플리케이션이 정상적으로 동작하지 못하는 상황이다. 예외는 개발자가 직접 처리할수 있으므로 미리 코드 설계를 통해 처리할 수 있다. 에러(error)는 주로 자바의 가상머신에서 발생시키는 것으로 예외와 달리 애플리케이션 코드에서 처리할 수 있는 것이 거의 없다. 예를 들어 메모리 부족(OutOfMemory), 스택 오버플로(StackOverFlow)가 있다.  (1) 예외 클래스자바의 예외 클래스는 아래와 같은 상속 구조를 갖추고 있다. Exception 클래스는 Checked Exception 과 Unchecked Exception 으로 구분할 수 있다.  Checked Exception(..

SpringBoot 2024.02.28

유효성 검사

1. 유효성 검사애플리케이션의 비즈니스 로직이 올바르게 동작하려면 데이터를 사전 검증하는 작업이 필요하다. 이것을 유효성 검사 또는 데이터 검증이라고 한다. (1) 일반적인 애플리케이션 유효성 검사의 문제점계층별로 진행되는 유효성 검사는 검사 로직이 각 클래스별로 분산돼 있어 관리하기가 어렵다.검증 로직에 의외로 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있다.검증해야 할 값이 많다면 검증하는 코드가 길어진다. 이러한 문제들로 코드가 복잡해지고 가독성이 떨어진다.이를 해결하기 위해 자바 진영에서 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공한다.Bean Vaildation은 어노테이션을 통해 다양한 데이터를 검증하는 기능을 제공한다.즉, 유효성 검사를 위한 로직을 D..

SpringBoot 2024.02.28

연관관계 매핑

1. 연관관계 매핑 종류와 방향One To One : 일대일 (1:1)One To Many : 일대다(1:N)Many To One : 다대일 (N:1)Many To Many : 다대다(N:M)  데이터베이스에서는 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조로 생성되지만 JPA를 사용하는 객체지향 모델링에서는 엔티티 간 참조 방향을 설정할 수 있다. 데이터베이스와 관계를 일치시키기 위해 양방향으로 설정해도 무관하지만 비즈니스 로직의 관점에서 봤을 때 단방향 관계만 설정해도 해결되는 경우가 많다. 단방향 : 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식이다.양방향 : 두 엔티티의 관계에서 각 엔티티가 서로의 엔티티를 참조하는 형식이다. 연관관계가 설정되면 한 테이블에서 다..

SpringBoot 2024.02.22

JPA Auditing

1. JPA Auditing'Audit' 이란 '감시하다' 라는 뜻으로, 각 데이터마다 '누가', '언제' 데이터를 생성하고 변경했는지 감시한다는 의미로 사용된다. 대표적으로 많이 사용되는 필드는 '생성 주체', '생성 일자', '변경 주체', '변경 일자' 가 있다.  (1) JPA Auditing 기능 활성화Configuration 클래스를 별도로 생성하고 @EnableJpaAuditing 어노테이션을 지정한다.// Configuration 클래스 생성@Configuration@EnableJpaAuditingpublic class JpaAuditingConfiguration { ...}    (2) BaseEntitiy 만들기코드의 중복을 없애기 위해서는 각 엔티티에 공통으로 들어가게 되는 칼럼(필드..

SpringBoot 2024.02.14

Spring Data JPA 활용

1. JPQLJPQL은 JPA Query Language의 줄임말로, JPA에서 사용할 수 있는 쿼리를 의미한다. SQL과의 차이점은 SQL에서는 테이블이나 칼럼의 이름을 사용하지만 JPQL은 아래 그림과 같이 엔티티 객체를 대상으로 수행하는 쿼리이기 때문에 매핑된 엔티티의 이름과 필드의 이름을 사용한다.     2. 쿼리 메서드Repository 는 JpaRepository 를 상속받는 것만으로도 다양한 CRUD 메서드를 제공한다. 하지만 이러한 기본 메서드들은 식별자 기반으로 생성되기 때문에 별도의 메서드를 정의해서 사용하는 경우가 많다. 이때 간단한 쿼리문을 작성하기 위해 사용되는 것이 쿼리 메서드 이다.  (1) 쿼리 메서드의 생성쿼리 메서드는 동작을 결정하는 주제(Subject)와 서술어(Pre..

SpringBoot 2024.02.13

ORM (Object Relational Mapping)

1. ORM (Object Relational Mapping)ORM은 테이블을 객체지향적으로 사용하기 위한 기술이다.객체 관계 매핑을 의미한다. 즉, 객체와 DB 테이블이 매핑을 이루는 것을 의미한다.자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법이다.이 게시글에서 객체지향 언어에서의 객체는 클래스를 의미한다.클래스는 데이터베이스의 테이블과 매핑하기 위해 만들어진 것이 아니기 때문에 RDB 테이블과 불일치가 존재한다. ORM은 이 둘의 불일치와 제약사항을 해결하는 역할이다.   (1) ORM의 장점데이터베이스 쿼리를 객체지향적으로 조작할 수 있다.쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어든다.객체지향적으로 데이터베이스..

SpringBoot 2024.02.08

REST API 명세를 문서화하기

1. 명세해당 API가 어떤 로직을 수행하는지 설명하고 이 로직을 수행하기 위해 어떤 값을 요청하며, 이에 따른 응답값으로는 무엇을 받을 수 있는지를 정리한 자료이다.API는 개발 과정에서느 계속 변경되므로 작성한 명세 문서도 주기적으로 업데이트가 필요하다. 이와 같은 문제를 해결하기 위해 등장한 것이 Swagger 라는 오픈소스 프로젝트이다. 2. Swagger 설정 코드http://localhost:8080/swagger-ui.html 로 접속하면 Swagger 페이지가 출력된다.

SpringBoot 2024.02.02

API 작성 방법 (PUT API)

1. PUT API 만들기PUT API는 웹 애플리케이션 서버를 통해 데이터베이스 같은 저장소에 존재하는 리소스 값을 업데이트 하는데 사용한다.     (1) @RequestBody를 활용한 PUT 메서드 구현POST 메서드와 마찬가지로 HTTP Body에 담아 전달한다. 서버에서는 이 값을 받기 위해 @RequestBody를 사용한다.      (2) ResponseEntity 를 활용한 PUT 메서드 구현ReqeustEntity와 ResponseEntity는 HttpEntity를 상속받아 구현한 클래스이다.그 중 ResponseEntity는 서버에 들어온 요청에 대해 응답 데이터를 구성해서 전달할 수 있게 한다.다른 메서드에서도 모두 사용할 수 있는 클래스이다.

SpringBoot 2024.02.02

API 작성 방법 (POST API)

1. POST API 만들기POST API는 웹 애플리케이션을 통해 데이터베이스 등의 저장소에 리소스를 저장할 때 사용되는 API이다. POST API에서는 저장하고자 하는 리소스나 값을 HTTP 바디(Body)에 담아 서버에 전달한다.    (1) @RequestMapping 으로 구현하기@RequestMapping의 method 요소를 RequestMethod.POST로 설정한다     (2) @RequestBody를 활용한 POST 메서드 구현일반적으로 POST 형식의 요청은 클라이언트가 서버에 리소스를 저장하는데 사용한다. 그러므로 클라이언트의 요청 트래픽에 값이 포함되어 있다. 즉, POST 요청에서는 리소스를 담기 위해 HTTP Body에 값을 넣어 전송한다.Body 영역에 작성되는 값은 일반..

SpringBoot 2024.02.02
반응형