전체 글 46

[Springboot] springdoc 을 사용하여 Swagger 설정하기 - 2

1. API 명세2. Schemas 명세 Springdoc OpenAPI 는 다양한 어노테이션을 활용해 API 문서를 쉽게 생성하고 관리할 수 있도록 해준다. 다음과 같은 Get API 기준으로 각종 어노테이션을 적용해보자. @GetMapping public ResponseEntity getProduct(Long number) { ProductResponseDto productResponseDto = productService.getProduct(number); return ResponseEntity.status(HttpStatus.OK).body(productResponseDto); }[API 명세]컨트롤러에 적용하는 어노테이션에 대해 알..

[Springboot] springdoc 을 사용하여 Swagger 설정하기 - 1

1. Swagger ?2. springdoc - springfox3. Setting [Swagger ?]API를 개발함에 있어, 명세 관리는 필수이다.해당 API가 어떤 로직을 수행하는지 설명하고, 이 로직을 수행하기 위해 어떤 값을 필요로 하며, 이 로직의 결과로는 어떤 값이 생성되는지를 정리한 자료가 있어야 API를 사용함에 있어 불편이 줄어들 수 있기 때문이다. 이런 API 명세는 개발 과정에서 지속적으로 업데이트 해주어야 하며, 매우 번거롭고 많은 시간이 소요되는 업무이다.이러한 불편함을 줄여주는 Swagger 프로젝트에 대해 알아보자.[springdoc - springfox]스프링부트 환경에서 Swagger 를 사용할 수 있는 대표적인 라이브러리로는 Springfox 와 Springdoc 이 있..

[Spring Boot] JPA - 4. CRUD Example

1. Environment2. Sources3. Test Springboot - Basic JPA CRUD API Example JPA를 바로 사용하기 보단, 동작 원리에 대해 알고 사용하는 것이 도움이 된다.JPA 관련 포스팅https://jh4dev.tistory.com/24 [Spring Boot] JPA - 1. ORM 과 JPA1. ORM2. JPA & Hibernate [ORM]ORM은 Object Relational Mapping 의 줄임말로, 객체 관계 매핑을 의미한다.객체지향 언어에서 의미하는 객체와 RDB의 테이블을 자동으로 매핑하는 방법으로, 자바에서는 클래스와jh4dev.tistory.com https://jh4dev.tistory.com/25 [Spring Boot] JPA - 2..

[Java] Lombok 롬복 라이브러리

1. Lombok ?2. 사용법 (인텔리제이)3. 롬복 어노테이션 [Lombok]Lombok(롬복)은 데이터 클래스를 생성할 때, 반복적으로 사용하는 메서드들을 어노테이션으로 대체하는 기능을 제공하는 라이브러리이다. 일반적으로 많은 멤버 변수를 선언하고, 각 멤버 변수 별 getter() / setter() 메서드를 만들면 코드가 길어지고, 가독성이 낮아지곤 한다.비록 IDE 자체적으로 getter() / setter() / toString() 메서드 등을 자동으로 생성하는 기능을 제공하긴 하지만, 앞서 언급한 단점은 마찬가지이다.이런 경우 롬복을 활용하면, 아래와 같은 장점을 가질 수 있다.어노테이션 기반으로 코드를 자동으로 생성하므로 생산성이 높아진다.반복되는 코드를 생략할 수 있어 가독성이 좋아진다..

Java 2024.07.26

[Spring Boot] JPA - 3. Entity & Repository

지난 포스팅에서 Entity / Entity Manager / Persistence Context 의 역할과 관계에 대해 알아보았다.이번 포스팅에서는 실제 Entity 클래스를 생성하는 방법과, Spring Data JPA 를 사용하기에, Entity Manager 를 사용하는 Repository 에 대해 알아보자. ** 포스팅 내, 샘플 소스는 롬복(Lombok) 을 사용하여 작성되어있으니 유의 바랍니다. **롬복 관련해서는 별도의 포스팅을 작성할 예정입니다. 1. Entity2. Repository3. Repository & Entity Manager [Entity]JPA에서 Entity 는 DB 테이블에 매핑된 클래스를 의미한다.Entity 클래스에서는 어노테이션을 활용해 DB에 쓰일 테이블과 컬럼..

[프로그래머스 level2] 이모티콘 할인행사 - java

1. 문제 2. 접근 방법 3. 풀이 소스  [문제]카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다.이모티콘 플러스 서비스 가입자를 최대한 늘리는 것.이모티콘 판매액을 최대한 늘리는 것.1번 목표가 우선이며, 2번 목표가 그 다음입니다.이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다.n명의 카카오톡 사용자들에게 이모티콘 m개를 할인하여 판매합니다.이모티콘마다 할인율은 다를 수 있으며, 할인율은 10%, 20%, 30%, 40% 중 하나로 설정됩니다.카카오톡 사용자들은 다음과 같은 기준을 따라 이모티콘을 사거나, 이모티콘 플러스 서비스에 가입합니다.각 사용자들은 ..

[Spring Boot] JPA - 2. Entity

1. Entity 엔티티2. Entity Manager 엔티티 매니저3. Persistence Context 영속성 컨텍스트 [Entity]Entity(엔티티)는 ORM 의 핵심 개념으로, DB 테이블과 매핑되는 JAVA 클래스 이다.객체 지향적인 방식으로 DB를 다룰 수 있게 해주며, 객체지향 프로그래밍의 장점을 사용할 수 있게 한다.Entity 의 특징Entity는 DB 테이블과 매핑되며, Entity Class의 각 Field는 DB 테이블의 Column에 해당한다.하나의 Entity Instance는 DB 테이블의 레코드(Row)에 해당한다.Entity는 DB에서 고유하게 식별할 수 있는 식별자를 가지며, DB 테이블의 PK(Primary Key)에 해당한다.특정 DB에 종속되지 않고, 다양한 D..

[Spring Boot] JPA - 1. ORM 과 JPA

1. ORM2. JPA & Hibernate [ORM]ORM은 Object Relational Mapping 의 줄임말로, 객체 관계 매핑을 의미한다.객체지향 언어에서 의미하는 객체와 RDB의 테이블을 자동으로 매핑하는 방법으로, 자바에서는 클래스와 테이블을 매핑하는 것을 의미한다. 하지만, 클래스는 DB 테이블과 매핑하기 위한 목적으로 만들어진 것이 아니기 때문에, 불일치가 존재한다.이같은 불일치와 제약사항을 해결하는 역할이 ORM 이다. ORM 을 사용함으로써 얻을 수 있는 장점은 다음과 같다.데이터베이스 쿼리를 객체지향적으로 조작할 수 있다.쿼리 작성량이 현저히 줄어, 개발 비용을 줄일 수 있다.코드의 가독성을 높일 수 있다.재사용 및 유지보수가 편리하다.ORM을 통해 매핑된 객체는 모두 독립적으로..

[Spring Boot] Rest Controller - 6. HttpEntity

1. HttpEntity ?2. RequetEntity & ResponseEntity [HttpEntity]Spring Framework에는 HttpEntity 라는 클래스가 있다.HttpEntity 는, Header 와 Body 로 구성되어 HTTP 요청과 응답을 구성하는 역할을 수행한다.HttpEntity 의 필드는 다음과 같다. package org.springframework.http; import org.springframework.lang.Nullable; import org.springframework.util.MultiValueMap; import org.springframework.util.ObjectUtils; public class HttpEntity { ..

[Spring Boot] Rest Controller - 5. DELETE

1. Http Method DELETE2. DELETE Controller  [Http Method DELETE]HTTP DELETE 메서드는 서버에 있는 리소스를 삭제하는데 사용된다.클라이언트는 리소스를 식별할 수 있는 값을 서버로 전달하며, 서버가 해당 리소스를 조회하고 삭제하는 역할을 수행한다.지정된 URI 에 있는 리소스를 삭제한다.같은 DELETE 요청을 여러 번 수행해도, 서버의 상태는 변하지 않는다.[DELETE Controller]컨트롤러를 통해 값을 받는 단계에서는 간단한 값을 받기 때문에, GET 메서드와 같이 URI 에 값을 넣어 요청을 받는 형태로 구현된다.즉, GET Controller 와 형태는 크게 다르지 않다.  @DeleteMapping("/{variable}") ..