[이론반] 스프링 데이터의 흐름

kang·2024년 8월 19일

SPRING

목록 보기
10/22

/STUDY/

  • Spring MVC
  • Spring 3 Layer
  • 스프링의 데이터 흐름 정상화


spring이란?

: 자바 어플리케이션 개발을 도와주는 프레임 워크

-> 자바 생태계에는 여러 서비스가 있음! (사진 참조)

Spring MVC
-> 동기식 웹 어플리케이션 개발을 위한 프레임워크

스프링 MVC (Model-View-Controller)

  • 목적: 전통적인 동기식 웹 애플리케이션 개발을 위한 프레임워크.
  • 아키텍처: 동기식 요청-응답 기반으로 동작. 클라이언트가 요청을 보내면 서버는 요청을 처리하고, 처리 결과를 클라이언트에 응답으로 보냅니다.
  • 주요 특징:
    • 전통적인 웹 개발에 많이 사용되며, 템플릿 엔진(e.g., Thymeleaf, JSP)과 함께 뷰(View)를 렌더링합니다.

    • HTTP 프로토콜을 기반으로 동작하며, RESTful 웹 서비스 구축에도 자주 사용됩니다.

    • 서블릿 API와 밀접하게 연동됩니다.

      MVC는 클라이언트와 서버간의 구조 관점에서 접근한 개념

1. Model (모델)

  • 역할: 데이터와 비즈니스 로직을 다룹니다.
  • 쉽게 설명: 모델은 애플리케이션이 관리해야 하는 정보나 데이터를 의미합니다. 예를 들어, 사용자의 정보(이름, 나이, 주소 등)를 저장하거나 데이터베이스에서 가져오는 작업을 담당합니다.
  • 예시: 사용자가 스케줄 일정을 생성 하면 이를 생성하고 저장하는 역할을 수행하는 역할을 합니다.

2. View (뷰)

  • 역할: 사용자가 보게 될 화면을 담당합니다.
  • 쉽게 설명: 뷰는 데이터를 시각적으로 표현하는 부분입니다. 화면에 출력될 내용(HTML, 텍스트 등)을 만들고, 사용자에게 보여주는 역할을 합니다.
  • 예시: 사용자가 스케줄 일정을 생성하는데 성공하면 "스케줄 생성 성공"이라는 메시지를 화면에 보여주는 것이 뷰의 역할입니다.

3. Controller (컨트롤러)

  • 역할: 모델과 뷰를 연결하는 다리 역할을 합니다.
  • 쉽게 설명: 컨트롤러는 사용자의 요청을 받아서, 그 요청을 처리하고, 결과를 뷰에 전달해 화면에 나타나게 하는 역할을 합니다.
  • 예시: 사용자가 스케줄 일정을 요청을 하면, 컨트롤러는 그 요청을 받아 모델에게 전달해주고 모델에서 작업이 마무리되면 뷰에게 전달하는 역할을 합니다.

Spring 3 Layer

1. Presentation Layer (프레젠테이션 레이어) Controller

  • 역할: 사용자가 입력한 데이터의 형식이나 간단한 유효성 검사를 수행합니다. 예를 들어, 입력 필드가 빈 값인지, 숫자 필드에 숫자가 들어왔는지, 이메일 형식이 올바른지 등을 검증합니다.
  • 쉬운 설명 :
    • 사용자가 입력한 요청이 유요한 요청인지 검사하고 필터링 하는 역할
    • 사용자에게 요청을 받고, 데이터를 전달하는 역할
  • 구성 요소:
    • Controller: Spring MVC의 @Controller 또는 @RestController

2. Service Layer (서비스 레이어) Service

  • 역할: 비즈니스 로직을 처리하는 핵심 레이어입니다. Presentation Layer와 Data Access Layer 사이에서 중간 역할을 합니다. Presentation Layer의 요청을 받아 필요한 데이터를 가공하거나 로직을 실행하여 결과를 반환합니다.
  • 쉬운 설명 :
    • 사용자가 요청한 요구사항이 실질적으로 처리하는 역할
  • 구성 요소:
    • Service: @Service 어노테이션으로 표시된 클래스

3. Data Access Layer (데이터 접근 레이어) Repository

  • 역할: 데이터베이스와 상호작용하며, 데이터를 저장, 검색, 업데이트, 삭제하는 역할을 합니다. 비즈니스 로직에서 데이터를 필요로 할 때 이 레이어를 통해 데이터를 처리합니다.
  • 쉬운 설명 :
    • 스프링에서 데이터 베이스의 데이터를 처리하는 역할
  • 구성 요소:
    • Repository : @Repository 어노테이션으로 표시된 클래스들이 여기에 속하며, JPA, Hibernate, MyBatis 등과 같은 ORM(Object-Relational Mapping) 프레임워크를 사용해 데이터베이스와 상호작용합니다.
    • Entity: 데이터베이스 테이블과 매핑되는 도메인 객체로, 데이터베이스에서 가져오거나 저장할 데이터를 캡슐화합니다.

두 개는 다른 개념!!
-> mvc: 클라이언트와 서버간의 구조 관점에서 접근
-> Spring3Layer: 서버 개발 관점에서 각 계층 별로 역할을 분리하는 개념

Spring MVC

주된 관심사 :

  • 사용자 요청 처리와 응답 생성
    • Spring MVC의 주요 목적은 클라이언트(사용자)와 서버 간의 상호작용을 관리하는 것입니다. 이를 통해 웹 애플리케이션이 사용자의 요청을 받아 처리하고, 그 결과를 사용자에게 적절한 형식으로 반환하는 과정을 쉽게 구현할 수 있습니다

Spring 3 Layer

주된 관심사:

  • 애플리케이션의 구조화 및 계층화
    • Spring 3 Layer 는 애플리케이션을 세 개의 주요 계층으로 나누어 각 계층이 독립적으로 동작할 수 있도록 구조화하는 데 초점을 맞추고 있습니다. 이를 통해 애플리케이션의 유지보수성과 확장성을 향상시킬 수 있습니다.
profile
뉴비 개발 공부중

0개의 댓글