2023/04/10 – 봄 관련 질문 (1)

REST API

REST API: REST API는 REST를 기반으로 하는 API를 말합니다.

– 여기서 REST란? Representational State Transfer의 약자로 리소스를 이름으로 식별하여 리소스의 상태를 교환하는 모든 것을 의미합니다.

REST는

  1. HTTP URI(Uniform Resource Identifier)를 통해 리소스를 지정하고,
  2. HTTP 방식(POST, GET, PUT, DELETE, PATCH 등)을 통해
  3. 해당 리소스(URI)에 CRUD 연산을 적용하는 것을 의미합니다.

REST API의 특징

1. 클라이언트(서버-클라이언트 구조)
2. 무국적자
3. 캐시 가능
4. 레이어드 시스템
5. 통일된 인터페이스
오전.


아파치, 톰캣

아파치란? 오픈 소스 소프트웨어 그룹 아파치 소프트웨어 재단만든 웹 서버 프로그램.

Apache는 정적 데이터를 처리하고 데이터를 동적으로 처리할 수 없는 웹 서버입니다.

톰캣은 아파치와 마찬가지로 아파치 그룹에서 만든 WAS로 기본 웹 서버인 아파치와 달리 동적 데이터를 처리하도록 만들어졌다.

Tomcat은 Apache와 같이 정적 데이터를 처리할 수 있는 웹 서버와 동적 데이터를 처리할 수 있는 서블릿 컨테이너를 모두 포함하므로 Apache Tomcat이라고도 합니다.

아파치와 톰캣의 장단점 장점 불리
아파치 – 빠른 처리 속도
– 구조가 간단하여 원가절감
– 트래픽 과부하에 강함
– 정적 데이터만 처리 가능
– 다른 서비스와 상호 작용할 수 없습니다.

수코양이 – 동적 데이터 처리 가능 – 아파치보다 느림
– 트래픽 과부하에 약함


로컬 호스트

로컬 호스트 란 무엇입니까 컴퓨터 네트워크에서 사용되는 루프백 호스트 이름으로 자신의 컴퓨터를 의미합니다.

마치 원격 컴퓨터인 것처럼 자신의 컴퓨터와 통신할 수 있기 때문에 테스트에 자주 사용됩니다.

Spring 프레임워크는 자체 내장 서버로 Tomcat, Jetty 등을 사용한다.

Spring이 실행되면 내장 서버가 자동으로 구축되며 localhost를 사용하여 액세스할 수 있습니다.


컨트롤러, 서비스, 저장소, 도메인 차이점

Spring 프레임워크는 일반적으로 MVC(Model-View-Controller) 패턴에 따라 웹 애플리케이션을 개발합니다.

이 패턴은 응용 프로그램을 세 가지 주요 부분으로 분리하여 개발하는 방법입니다.

이 세 가지 주요 부분은 컨트롤러, 서비스 및 리포지토리(DAO)입니다.

또한 응용 프로그램에서 사용하는 도메인 개체도 매우 중요합니다.

  • 제어 장치: 웹 요청을 받아 처리하고 결과를 반환합니다.

    컨트롤러는 사용자가 보낸 요청을 받아 도메인 개체를 사용하여 서비스를 호출하거나 처리하고 그 결과를 사용자에게 반환합니다.

  • 서비스: 비즈니스 로직을 처리하는 역할을 합니다.

    서비스는 Controller로부터 받은 요청을 처리하고 Repository(DAO)를 사용하여 데이터베이스와 통신합니다.

    서비스는 여러 Repository를 결합하여 비즈니스 로직을 실행합니다.

  • 저장소(DAO): 데이터베이스에 접근하는 역할을 합니다.

    리포지토리는 데이터베이스와 통신하여 데이터를 읽고 쓰는 등의 작업을 수행합니다.

  • 도메인: 어플리케이션에서 사용되는 객체를 정의하는 역할을 합니다.

    도메인은 데이터베이스에 저장된 데이터의 구조와 애플리케이션에서 사용되는 객체의 구조를 정의합니다.

이런식으로 발전

  1. 각 역할이 명확하게 정의됨
  2. 유지 보수 및 테스트 용이성
  3. 애플리케이션 확장성 증가

~의 장점이 있다


Get과 Post, DTO, DAO, VO 및 Entity의 차이점

Get 방식 : 주로 데이터 검색에 사용되며 데이터가 URL에 포함되어 전송되기 때문에 보안에 취약한 단점이 있습니다.

캐싱을 활용하면 더 빠른 조회가 가능합니다.

Post 방식 : 데이터를 보낼 때 사용하며, http 메시지의 본문에 데이터가 포함되어 있기 때문에 많은 양의 데이터가 전송된다.

전송에는 유리하지만 캐싱에는 불가능합니다.


DTO: (Data Transfer Object)는 서로 다른 계층 간의 데이터 교환을 담당하는 개체입니다.

주로 컨트롤러와 서비스 계층 간의 데이터 전송에 사용됩니다.

일반적으로 setter/getter 메서드가 있습니다.

DAO: (Data Access Object)의 약자로, 데이터베이스 접근을 담당하는 개체입니다.

데이터베이스에 액세스하고 CRUD 작업을 수행합니다.

VO: (Value Object)의 약자로 도메인에서 사용되는 값 객체입니다.

읽기 전용이고 DTO와 유사하지만 데이터 전송을 담당하는 DTO와 달리 도메인 개체에서 사용되는 값을 갖는 개체입니다.

엔터티: 데이터베이스에 직접 매핑되고 데이터베이스 테이블에 필드로 존재하는 열만 있는 개체입니다.

DB와 직접 매핑되기 때문에 데이터 변경을 줄이기 위해 Settet 방식을 사용해서는 안 됩니다.

※ DTO와 Entity의 차이점은 DTO의 경우 데이터의 변화가 많은 반면, DB에 직접 연결된 Entity의 경우

데이터가 자주 변경되면 다른 클래스와 문제가 발생할 수 있으므로 둘을 분리해야 합니다.


출처: Entity, DTO, DAO(tistory.com)