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

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

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개의 댓글