
계층이란?
계층이라는 것은 각자의 역할과 책임이 있는 소프트웨어의 구성 요소를 의미합니다. 각 계층은 특정한 역할과 책임을 가지며 서로 분리되어 작동하도록 설계되어 있습니다. 스프링부트에는 프레젠테이션, 비즈니스, 퍼시스턴스 계층이 있습니다. 이 계층은 서로 통신하며 프로그램을 구성합니다. 스프링부트의 각계층은 서로 소통할 수 있지만 다른 계층에 직접 간섭하거나 영향을 미치지 않습니다. 각 계층은 아래 그림과 같이, 양 옆의 계층과 통신하는 구조를 따릅니다.
여기서 '프레젠테이션-비즈니스-퍼시스턴스 계층'이란 개념의 영역이고, '컨트롤러-서비스-리포지토리·엔티티'가 실제 구현의 영역입니다.
계층을 분리하는 이유
이러한 계층들은 애플리케이션의 모듈화, 유지 보수 용이성, 그리고 확장성을 높이기 위해 사용되며, 애플리케이션의 변화나 업데이트가 발생할 때 한 계층의 변경이 다른 계층에 영향을 미치지 않도록 할 수 있습니다.

프레젠테이션 계층
'HTTP 요청을 받아, 비즈니스 계층으로 전송하는 역할'을 합니다. '컨트롤러가 바로 프로젠테이션 계층의 역할'을 합니다. 이 계층은 사용자 인터페이스(UI)를 담당하며, 사용자가 시각적으로 정보를 보여주고 입력을 받을 수 있는 화면을 구성합니다. 컨트롤러는 스프링부트 내에 여러개가 있을 수 있습니다.
비즈니스 계층
'모든 비즈니스 로직을 처리하는 역할'을 합니다. 비즈니스 로직이란 서비스를 만들기 위한 로직을 말합니다. 쉽게 말해, 데이터처리, 계산, 검증 등 웹사이트에서 벌어지는 모든 작업을 말합니다. '서비스가 비즈니스 계층의 역할'을 합니다.
ex) 주문서비스 : 데이터처리 로직(주문 개수, 가격 등 데이터처리), 예외처리 로직(주문처리하다 발생하는 예외처리), 프로세스를 구현하기 위한 로직(주문을 받거나 취소하는 것 같은 프로세스 구현)
퍼시스턴스 계층
'모든 데이터베이스 관련 로직을 처리하는 역할'을 합니다. 이과정에서 *DAO 객체를 사용할 수 도 있습니다. 퍼시스턴스 계층은 데이터를 영구적으로 저장하고 검색하는 작업을 담당합니다. 이 계층은 데이터베이스와 연결되어 데이터의 생성, 수정, 삭제, 검색과 같은 작업을 수행합니다.
*DAO 객체 : 데이터베이스 계층과 상호작용하기 위한 객체
🌈 요약 정리 🌈

프레젠테이션 계층 : http 요청을 받아, 비즈니스 계층으로 전송
비즈니스 계층 : 모든 비즈니스 로직 처리. 퍼시스턴스 계층에서 제공하는 서비스 사용. 권한 부여, 유효성 검사를 하기도 함.
퍼시스턴스 계층 : 모든 스터리지 관련 로직 처리, 데이터베이스에 접근하기 위한 객체인 DAO를 사용하기도함.
참고자료 : 스프링 부트 3 백엔드 개발자 되기: 자바 편
https://product.kyobobook.co.kr/detail/S000201766024
스프링 부트 3 백엔드 개발자 되기: 자바 편 | 신선영 - 교보문고
스프링 부트 3 백엔드 개발자 되기: 자바 편 | ★ 자바 백엔드 개발자가 되고 싶다면 ★ 자바 언어 입문 그다음에 꼭 보세요실력을 갖춘 개발자로 성장하려면 시작이 중요합니다. 그래서 이 책은
product.kyobobook.co.kr