[Spring boot] - 핵심 키워드

GD·2024년 7월 4일

백엔드

목록 보기
1/1

REST API

REST(Representational State Transfer)

  • 자원(Resource) : URL
  • 행위(Verb) : HTTP Method
  • 표현(Representations)

HTTP Method

  • GET : 조회
  • POST : 추가 / 등록
  • PUT : 수정 / 업데이트 / 추가 → 추가의 경우, 목적에 따라 쓰일 수 있음.
  • DELETE : 삭제

서버와 클라이언트 간 데이터 통신 방법 중 HTTP 프로토콜을 사용할 시, REST방식의 전송 프로토콜을 사용함.

GET → query의 SELECT와 같음.

POST → query의 INSERT와 같음.

PUT → query의 UPDATE와 같음.

DELETE → query의 DELETE와 같음.

@controller & @service

Server 안에서 두 가지 요소로 기능이 분리 되어 구동.

@controller

기능 : 서버의 앞단에 위치하며 client와 통신의 최전선에 위치함. 데이터를 단순 가공하여 client의 요청 또는 전달 처리함.

사용되는 데이터 객체 타입 : DTO

@service

기능 : 서버의 뒷단에 위치하며 controller를 통해 요청 또는 전달 받은 데이터를 처리하며 비즈니스 로직을 작성함.

사용되는 데이터 객체 타입 : Entity

→ DTO를 인자로 받아 비즈니스 로직에 따라 데이터 가공 후, Entity 객체로 변환.

DTO

controller단에서 사용되는 객체로 client에 request 또는 response에 해당하는 데이터는 모두 DTO 객체로 처리함.

특징

  • 데이터 클래스
  • controller 단에서 사용하며 service 단에 파라미터로 전달됨.
  • 정적인 데이터 요청일 경우, DTO로 구성하여 데이터를 처리할 수 있음.
  • Getter, Setter를 지원함.

Entity

service단에서 사용되는 객체로 database table과 1:1로 매칭되는 객체임. db 접근을 하기 위해서는 모두 Entity 객체 형태로 처리해야함.

특징

  • 데이터 클래스
  • service 단에서 사용하며 database로 전달하는 데이터를 담는 객체임.
  • controller 단에 유출되면 안됨. 유출 시, 데이터베이스 구조가 외부로 반출되어 보안에 문제 생김.
  • Getter만 지원되며 데이터는 builder 패턴을 사용하여 객체 생성 시, 한번만 데이터를 입력할 수 있음.
  • builder 패턴을 이용하여 데이터베이스까지 데이터가 전달되는 중간과정에서 데이터 변경을 막을 수 있음.

주의사항

  • 구현한 entity class가 DB table과 매칭(타입, column명 등)이 안된다면 프로그램 구동 시, java servlet 단에서 exception 발생.

DAO

service단에서 사용되는 interface로 database query 기능 리스트를 정의함.

특징

  • 인터페이스
  • 접근할 테이블에서 사용하는 쿼리 리스트를 정의함.
  • 이를 기반으로 Repository를 호출하여 db에 접근함.

Repository

service단에서 사용되며 database 쿼리 정의 및 database 접근 가능.

특징

  • 인터페이스
  • database의 쿼리가 정의 되어있음.
  • 쿼리가 정의되어 있는 함수 호출 시, database에 접근 가능함.
  • database의 모든 접근은 Repository를 통해 이뤄짐.

@GetMapping

Controller 단에서 사용되는 태그이며 GET 요청에 대한 처리를 위해 사용함.

GET 요청에 대한 API를 정의하며 해당 API로 들어온 요청에 대한 처리.

@PostMapping

Controller 단에서 사용되는 태그이며 POST 요청에 대한 처리를 위해 사용함.

POST 요청에 대한 API를 정의하며 해당 API로 들어온 요청에 대한 처리.

@Getter, @Setter, @ToString

객체의 데이터를 가져오거나 변경할 때 getter와 setter를 사용.

기존 JAVA에서는 getter, setter 선언을 변수마다 해줘야했지만, lombok 라이브러리를 통해 getter, setter 태그를 통해 해당 번거로움을 줄일 수 있음.

profile
힘이 들면 힘들 내라.

0개의 댓글