Spring 의존관계 용어 정리

Dyong_Song·2024년 2월 20일

의존관계와 관련된 용어 정리하고 가기

📕Spring 의존관계

1. Controller

  • 클라이언트의 요청을 받아 해당 요청을 처리
  • 클라이언트와 서비스(또는 비즈니스 로직)는 중간 매개체 역할

2. Service

  • 비즈니스 로직을 담당
  • 주로 컨트롤러에서 받은 요청을 처리하고, 필요한 비즈니스 로직을 실행
  • 여러 비즈니스 로직이 모여 구성된 레이어

3. Repository

  • 데이터 베이스와 상호 작용 담당
  • 데이터 베이스와 관련된 작업을 수행하며, 엔티티 객체를 데이터베이스에 저장하거나 가져오는 역할 수행

4. Entity

  • 엔티티는 데이터베이스의 테이블과 매핑되는 객체
  • 주로 데이터베이스의 레코드를 나타내기 위한 클래스로 사용

5. DTO

  • DTO(Data Transfer Object)는 주로 서비스와 컨트롤러 간에 데이터를 전송하기 위한 객체
  • 비즈니스 로직에서 사용되는 엔티티와 달리, 클라이언트와의 데이터 전송 목적
  • 주로 특정 응답 형식을 나타내는데 사용

📌의존관계 흐름

  • Controller → Service: 컨트롤러에서 비즈니스 로직이 필요할 때, 서비스에 의존
  • Service → Repository: 서비스에서 데이터베이스와의 상호작용이 필요할 때, 레포지토리에 의존
  • Service → Entity: 서비스는 엔티티를 사용하여 비즈니스 로직을 수행
  • Controller ↔ DTO: 컨트롤러와 DTO는 주로 클라이언트와의 데이터 전송을 위해 상호작용

📕Entity와 DTO의 구분 이유

  1. 데이터 은닉과 보안
    • Entity는 주로 데이터베이스와 직접 매핑되어, 데이터베이스의 테이블 구조를 반영
    • 이로 인한 민감한 정보 노출 위험
    • DTO를 사용하여, 클라이언트에 전달되는 데이터 제어 (필요한 정보만 전달)
  2. API 응답 형식 제어
    • Entity는 데이터베이스를 위한 구조로 설계 (클라이언트에 필요없는 정보도 반환됨)
    • DTO 사용을 통해 클라이언트에게 필요한 형식으로 데이터를 구성하여 반환 가능
    • 서버와 클라이언트 간의 데이터 전송 최적화 및 효율성 증가
  3. 유연성과 확장성
    • Entity의 구조는 DB에 강하게 종속 + DB 스키마의 변경은 코드의 직접적 영향
    • DTO를 통해 클라이언트에 제공되는 데이터 형식을 독립적으로 유지
    • DB와 Entity 변경에 상대적으로 덜 민감하게 반응
  4. 클라이언트와의 인터페이스 분리
    • ResponseDTO와 RequestDTO의 분리를 통해 서로에게 필요한 데이터만 전달 가능

📕DAO / DTO / VO / Entity / Repository

DAO (Data Access Object)

  • 목적: 데이터베이스와의 상호 작용을 캡슐화하고, 데이터 액세스를 추상화하기 위한 객체
  • 특징: 주로 CRUD 연산을 수행하며, 데이터베이스와의 접근을 캡슐화하여 비즈니스 로직에서 데이터베이스에 직접 접근하지 않도록 한다.

DTO (Data Transfer Object)

  • 목적: 데이터 전송을 위한 객체로, 클라이언트와 서버 간의 데이터 교환을 위해 사용
  • 특징: 주로 클라이언트와 서버 간의 효율적인 데이터 전송을 위한 최적화된 구조를 가지며, 주로 응답 데이터를 클라이언트로 전송할 때 사용

Repository

  • 목적: 데이터베이스와의 상호 작용을 추상화하고, 단순한 인터페이스를 제공하여 개발자가 데이터를 쉽게 조회, 저장, 갱신, 삭제할 수 있도록 돕는 객체
  • 특징: 주로 Spring Data JPA와 같은 프레임워크에서 사용되며, 엔터티에 대한 CRUD 연산을 수행하는 메서드를 제공

VO (Value Object)

  • 목적: 값의 불변성과 일관성을 유지하며, 비즈니스 로직에서 사용되는 데이터를 표현하는 객체
  • 특징: 주로 불변 객체로 설계되어 값을 그룹화하고 해당 데이터의 특징을 나타낸다. 데이터의 불변성을 유지하므로 안정적인 비즈니스 로직을 구축할 수 있다.

Entity

  • 목적: 데이터베이스 테이블과 매핑되는 객체로, 데이터베이스와의 상호 작용 및 영속성을 제공
  • 특징: 주로 데이터베이스 테이블과 일치하는 구조를 가지며, 주로 JPA 등의 영속성 프레임워크에서 사용된다. 데이터베이스와의 매핑을 담당하며, 주로 데이터베이스에서 데이터를 조회, 저장, 갱신하는 데 사용
profile
꾸준한 개발자가 되자! Do steady yong

0개의 댓글