728x90
반응형

Spring 58

API 개발 : 간단한 주문조회 (지연로딩 최적화 - 패치 조인)

전 게시글과 동일한 조건에서 지연로딩으로 발생하는 1 + N 문제를 최적화하는 방법이다. 회원 조회가 아닌 주문 조회 REST API : GET Method 적용 주문과 xToOne관계로 맺어져 있는 정보를 조회할 것 즉, 컬렉션 조회가 아님 주문과 연관되어있는 회원, 배송정보를 조회할 것 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 작성 조건 : API 반환으로 원하는 조건은 { 주문 번호, 사용자 이름, 주문 날짜, 주문 상태, 배송지 정보} 이다. 이 스펙에 맞춰 DTO를 개발해야한다. @RestController @RequiredArgsConstructo..

Spring/API 2022.06.26

API 개발 : 간단한 주문 조회 (지연 로딩)

이번 게시글은 지난 게시글과는 달리 회원이 아닌 주문을 조회한다고 가정했을 경우이다. 조회이기 때문에 REST API : GET Method는 동일하다. 이번 간단한 주문 조회의 가정은 컬렉션 조회가 아닌 xToOne 관계 조회이다. 주문과 연관 되어 있는 관계 들 중 xToOne으로 관계가 맺어져 있는 회원, 배송정보를 가져올 것이다. 회원 조회가 아닌 주문 조회 REST API : GET Method 적용 주문과 xToOne관계로 맺어져 있는 정보를 조회할 것 즉, 컬렉션 조회가 아님 주문과 연관되어있는 회원, 배송정보를 조회할 것 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 ..

Spring/API 2022.06.26

회원 조회 API 개발 / Result 클래스로 유연한 JSON 반환

회원 조회는 값을 가져와 화면에 보여주기만 하면 된다. 즉, 생성 / 수정 없이 조회만 하면 된다 -> REST API : GET Method 사용 회원 조회 V1 : 응답 값으로 엔티티를 직접 외부에 노출 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @GetMapping("/api/v1/members") public List membersV1() { return memberService.findMembers(); } } V1 코드는 매우 간단하다. memberService를 통해 가지고 있는 모든 엔티티를 리스트 형태로 반환해주는 코드이..

Spring/API 2022.06.25

회원 수정 API 개발

전 게시글은 회원 등록 API 개발이었고, 이번 게시글은 회원 수정 API 개발이다. 회원 등록과 달리 수정이기 때문에 이번에는 REST API에서 PUT Method를 사용한다. * PUT Method와 POST Method의 차이! 수정하고자 하는 정보가 부분 정보인지 아니면 전체 정보인지에 따라 달리 사용하면 된다. PUT은 전체 업데이트를 할 때 사용하는 것이 적절하다. 부분 업데이트가 필요한 경우에는 PATCH를 사용하거나 POST를 사용하는 것이 REST API 스타일에 적절하다. 전 게시글을 통해 파라미터에는 엔티티가 아닌 API 스펙에 맞는 DTO 클래스를 생성하여 넘겨주어야 한다는 것을 알 수 있었다. 그러므로 이번 글에서는 엔티티 파라미터가 아닌 DTO 파라미터만 설명한다. @RestC..

Spring/API 2022.06.25

회원 등록 API 개발

Java / Spring 환경에서 회원을 등록하는 API를 이해해보자. 가장 먼저 회원을 등록하기 위해서는 REST API에서 리소스를 새로 생성해야한다. 즉, 리소스를 조회하거나 수정하는 Method가 아닌 생성하는 Method -> POST 방식을 사용한다. 첫 번째 방식으로 API 생성 메서드에 파라미터가 엔티티 일 때를 예로 들어보자. 1. 요청 값으로 Member 엔티티를 직접 받는 경우 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResp..

Spring/API 2022.06.25

API란? REST API란?

API란 무엇인가? API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어있다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 "대화"하고 휴대폰에 매일 최신 날씨 정보를 표시해준다. API는 무엇을 의미하나? API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다. API문서에는 개발..

Spring/API 2022.06.25

[Java / Spring] Redis - Pub/Sub

지난 게시글이 Spring에서 채팅 서버를 구현하기 위한 STOMP 프로토콜이 무엇인지 알아보는 게시글이었다. 이번 게시글은 레디스의 Pub / Sub 기능이 무엇인지 알아보고 이를 어떻게 Spring에 적용하는지 알아보자. ▶ Request / Response Method vs Messaging Method 메시징 방법 중 Pub / Sub에 대해 알아보기 전에, 기본적인 웹의 통신 방법에 대해 간단히 짚고 넘어가보자. 대부분의 웹 서버는 HTTP Request / Response 방식을 많이 사용한다. 대표적인 예로 REST API, GraphQL이 존재한다. Request / Response 방법은 HTTP 프로토콜을 기반으로 구현되기 떄문에 Stateless 한 특징이 있으며, 심플하고 단순하여 ..

Spring/Chat 2022.05.25

[Java / Spring] ObjectMapper 사용하여 JSON 파싱하기

스프링을 공부하면서 개발을 하다보면 내가 보낸 request에 대한 response가 JSON인 경우가 상당히 많다. 이럴 경우 다시 JSON에서 내가 사용하고자 하는 데이터를 객체 형태로 가져와야하는데 이 때 많이 사용하는 것이 Jackson 라이브러리의 ObjectMapper 클래스이다. 따라서, 내가 하고자 하는 개발에서 올바른 ObjectMapper 사용을 위해 ObjectMapper가 무엇인지 정리해보려한다. ▶ ObjectMapper란 무엇일까? JSON 컨텐츠 / 객체를 Java 객체로 deserialization(역직렬화) 하거나 Java 객체를 JSON형태로 serialization(직렬화)할 때 사용하는 Jackson 라이브러리의 클래스이다. ObjectMapper는 생성 비용이 비싸기..

Spring 2022.05.22

빈 등록 어노테이션 @Bean @Configuration @Component

영속성 컨테스트 관리를 위해 Bean을 등록하여야한다. 기존의 Spring에서는 xml을 활용하여 Bean을 등록하였지만 프로젝트 규모가 커지게 되면 xml 사용에는 한계가 존재한다. 그래서 탄생하게 된 것이 어노테이션을 이용하여 Bean을 등록하는 것이다. Bean 등록 어노테이션인 @Bean, @Configuration, @Component에 대해 알아보자! 가장 먼저 Spring Bean이란 무엇일까? Spring Bean이란 Spring의 DI Container에 의해 관리되는 POJO(Plain Old Java Object)를 Bean이라고 부르며, 이러한 Bean들은 Spring을 구성하는 핵심 요소이다. Spring의 Bean을 정리하면 아래와 같다. POJO(Plain Old Java Ob..

Spring/Lombok 2022.05.15

@PostConstruct @PreDestroy

▶ 언제 사용할까? 종속성 주입이 완료된 후 실행되어야 하는 메서드에 사용된다. 딱 한 번만 받아오면 되는 값을 사용 할 때마다 요청을 새로 호출하는 실수를 방지. @PostConstruct로 WAS가 뜰 때 한 번만 기본값을 세팅해두고 두고 두고 사용한다. ▶ @PostConstruct란, @PostConstruct는 의존성 주입이 이루어진 후 초기화를 수행하는 메서드이다. @PostConstruct 어노테이션을 설정해놓은 init 메서드는 WAS가 띄어짐과 동시에 실행된다. 이 메서드는 다른 리소스에서 호출하지 않는다고 하더라도 수행된다. ▶ @PostConstruct 사용 이유 1) 생성자가 호출되었을 때, 빈은 초기화되지 않았음(의존성 주입이 아직 이루어지지 않았음) - 이럴 때 @PostCons..

Spring/Lombok 2022.05.08
728x90
반응형