T.I.L #32 config, controller, dto, entity, repository, service

개발자지망생·2023년 11월 14일

config, controller, dto, entity, repository, service이란?

스프링 프레임워크를 사용하여 게시판을 만들 때, config, controller, dto, entity, repository, service는 각각 특정 역할을 하는 구성 요소이다. 이들은 모두 스프링의 MVC(Model-View-Controller) 아키텍처와 관련이 있으며, 소프트웨어 설계 원칙인 SOLID를 따르는 데 도움을 준다.

1. Config(Configuration)

  • 설정 파일이나 클래스를 의미한다.
  • 스프링 애플리케이션의 설정을 관리하며, 데이터베이스 연결, 보안 설정, CORS 정책 등을 정의한다.

2. Controller

  • 사용자의 요청을 받아처리하는 부분이다.
  • HTTP 요청을 받아, 요청에 맞는 서비스 로직을 호출하고, 결과를 뷰에 전달한다.

3. DTO(Data Transfer Object)

  • 계층 간 데이터 교환을 위해 사용되는 객체이다.
  • 예를 들어, 사용자로부터 받은 데이터를 서비스나 데이터베이스 계층으로 전달하거나, 그 반대의 경우에 사용된다.

4. Entity

  • 데이터베이스 테이블에 대응하는 자바 클래스를 의미한다.
  • JPA(Java Persistence API)를 사용하여, 데이터베이스의 테이블과 매핑되며, 데이터의 영구저장을 관리한다.

5. Repository

  • Entity에 대한 데이터 접근 계층이다.
  • 데이터베이스와의 상호작용을 추상화하며, CRUD(Create, Read, Update, Delete) 작업을 손쉽게 할 수 있도록 도와준다.

6. Service

  • 비즈니스 로직을 수행하는 부분이다.
  • Controller가 받은 요청을 처리하는 로직을 담당하며, 필요한 데이터를 Repository로부터 가져오거나, 데이터를 처리한 후 결과를 Controller에게 반환한다.

MVC(Model-View-Controller)

MVC는 소프트웨어를 설계할 때 사용되는 아키텍처 패턴으로, 애플리케이션을 세 가지 주요 구성 요소로 분리한다.

1. Model

  • 데이터와 비즈니스로직을 처리한다.
  • 애플리케이션의 데이터 구조를 정의하고, 데이터베이스와의 상호작용 및 기타 비즈니스 로직을 관리한다.

2. View

  • 사용자 인터페이스를 담당한다.
  • 사용자에게 데이터를 시작적으로 표시하고, 사용자의 입력을 받는다. HTML,CSS,JavaScript 등을 사용하여 구현될 수 있다.

3. Controller

  • 사용자의 입력을 받고, Model과 View를 연결한다.
  • 사용자의 요청에 따라 Model을 조작하고, 그 결과를 View에 반영한다.

SOLID

SOLID는 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 나타낸다.

1. S - Single Responsibility Principle (단일 책임 원칙)

  • 한 클래스는 하나의 책임만 가져야 한다.
  • 클래스가 변경되어야 하는 이유는 오직 하나여야 한다.

2. O - Open/Closed Principle (개방/폐쇄 원칙)

  • 소프트웨어 구성 요소(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만, 수정에 대해서는 닫혀 있어야 한다.
  • 기존의 코드를 변경하지 않고도, 기능을 확장할 수 있어야 한다.

3. L - Liskov Substitution Principle (리스코프 치환 원칙)

  • 부모 클래스 대신에 자식 클래스를 사용해도 시스템이 문제없이 동작해야 한다.
  • 상속받은 클래스는 부모 클래스의 기능을 유지해야 한다.

4. I - Interface Segregation Principle (인터페이스 분리 원칙)

  • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다.
  • 클라이언트는 자신이 필요하지 않은 메서드에 의존하면 안 된다.

5. D - Dependency Inversion Principle (의존성 역전 원칙)

  • 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 이들 모두는 추상화에 의존해야 한다.
  • 추상화는 세부 사항에 의존해서는 안 되며, 세부 사항은 추상화에 의존해야 한다.

나의 궁금증

Config, Controller, DTO, Entity, Repository, Service와 MVC, SOLID는 무슨 연관일까?

MVC와의 관련성

  1. Config(Configuration)

    • MVC 패턴에서 Config는 직접적으로 Model, View, 또는 Controller 중 어느 하나에 속한다기보다는, 이 세 구성 요소가 효과적으로 작동하도록 지원하는 역할을 한다.
    • Config는 애플리케이션 전반에 걸쳐 사용되는 다양한 설정들을 관리한다. 이는 데이터 베이스 연결, 보안 설정, MVC 구성, 의존성 주입 등을 포함할 수 있다.
    • Config는 다양한 구성 요소들이 서로 올바르게 통합될 수 있도록 하는 중심점 역할을 한다. 예를 들어, Controller가 올바른 Service와 연결되고, Service가 필요한 Repository를 사용할 수 있도록 설정한다.
  2. Controller

    • MVC의 Controller 부분에 해당한다.
    • 사용자의 요청을 받아 처리하고, 적절한 서비스 로직을 호출하여 결과를 View에 반환한다.
  3. DTO(Data Transfer Object)

    • MVC 모델에서는 직접적으로 분류되지 않지만, 주로 Controller와 Model 사이에서 데이터 전송을 담당한다.
    • 사용자의 요청 데이터를 캡슐화하여 서비스나 데이터베이스 계층으로 전달하는 역할을 한다.
  4. Entity

    • MVC의 Model부분에 속한다.
    • 데이터벵스의 테이블과 매핑되어 데이터를 영구적으로 저장하고 관리하는 역할을 한다.
  5. Repository

    • Model의 일부로 볼 수 있으며, 데이터베이스와의 상호작용을 추상화한다.
    • 데이터 접근 로직을 캡슐화하여, Entity와 데이터베이스 간의 CRUD작업을 담당한다.
  6. Service

    • MVC에서 명시적으로 분류되지는 않지만, Model의 비즈니스 로직을 처리하는 부분으로 볼 수 있다.
    • 비즈니스 로직을 수행하고, Repository를 통해 데이터를 처리한다.

0개의 댓글