API 동작 과정은 어떻게 이루어져 ?

Loopy·2024년 1월 21일
1

트러블 슈팅

목록 보기
6/9


✅ ORM

ORM(Object-Relational Mapping)

객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형 시스템 간데이터를 변환하는 프로그래밍 기법
여기서 '객체 지향 프로그래밍'과 '관계형 데이터베이스'가 바로 이 호환되지 않는 시스템을 가리킨다.

  • 애플리케이션의 객체를 데이터베이스 테이블에 매핑하고, 객체 간의 관계를 데이터베이스의 외래 키 관계로 매핑한다.
  • SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행 가능하다.

JPA(Java Persistence API)

자바에서 제공하는 ORM 표준

  • JPA를 사용하면, 자바 애플리케이션에서 RDBMS(관계형 데이터베이스) 를 사용하기 위한 표준 인터페이스를 제공받을 수 있다.
  • 데이터베이스에 접근하는 코드를 간결하고 쉽게 작성 가능하다.

JPA는 인터페이스의 모음으로, 실제 동작은 JPA를 구현한 라이브러리가 담당한다.
대표적인 JPA 구현체로는 Hibernate, EclipseLink 등이 있다.


✅ API (Application Programming Interface)

클라이언트와 서버 간에 데이터를 교환하는 방법을 정의한 것으로, 주로 HTTP 프로토콜을 사용하여 통신한다.

< 전체적인 과정 >

  1. 클라이언트가 API를 호출
    HTTP 요청(request)의 형태로 서버에 전달된다.
    이 요청에는 HTTP 메서드(GET, POST, PUT, DELETE 등), 헤더, URL, 쿼리 매개변수, 바디 등이 포함될 수 있다.

  2. 서버에서 이 요청을 받아서 적절한 로직을 수행
    예) 데이터베이스에서 데이터를 검색하거나, 데이터를 생성, 수정, 삭제하는 등의 작업

  3. 작업을 완료하면, HTTP 응답(response)의 형태로 클라이언트에게 전달
    이 응답에는 HTTP 상태 코드(200, 404, 500 등), 헤더, 바디 등이 포함될 수 있다.
    바디에는 주로 JSON 형식의 데이터가 포함되며, 클라이언트가 필요로 하는 정보를 담고 있다.

  4. 클라이언트는 이 응답을 받아서 적절한 처리
    예) 응답 데이터를 화면에 표시하거나, 다른 API를 호출하는 등의 작업을 수행할 수 있다.

< 백엔드 API 처리 단계 >

Controller: 사용자의 요청을 받아 처리하는 역할
클라이언트로부터 들어온 HTTP 요청을 적절한 서비스 메서드에 매핑시키는 역할을 담당한다.
이때, 요청 데이터를 검증하거나 요청에 필요한 추가 정보를 취합하는 등의 역할을 수행하기도 한다.

Service: 실제 비즈니스 로직이 구현되는 곳
Controller가 필요로 하는 작업을 수행하기 위해 필요한 로직을 구현한다.
트랜잭션 처리, 도메인 간의 복잡한 흐름 제어, 여러 Repository를 활용한 쿼리 등의 작업이 이루어진다.

Repository: 데이터를 직접적으로 접근하는 계층
주로 데이터베이스에 직접 접근하여 CRUD(Create, Read, Update, Delete) 작업을 수행한다. Repository는 Service에게 필요한 데이터를 제공하거나, Service의 요청에 따라 데이터를 변경한다.

DB: 실제 데이터가 저장되는 곳
위의 모든 작업이 이루어진 결과가 최종적으로 저장되는 곳이며, 필요한 데이터를 제공하는 역할을 한다.

DTO (Data Transfer Object)

데이터를 전달하는 객체

Controller와 Service 계층 간에 데이터를 전달할 때 DTO를 사용하면, Service 계층이 필요로 하는 데이터만을 Controller로부터 받을 수 있다.

getter, setter 메서드를 가지고 있으며, 객체의 상태를 변경할 수 있는 메서드는 가지고 있지 않는다.

시스템 간에 데이터를 교환하거나 계층 간에 데이터를 전달하는 과정에서 발생할 수 있는 의존성 문제를 해결할 수 있고 코드의 유지보수성을 높일 수 있다.

profile
잔망루피의 알쓸코딩

0개의 댓글