백엔드개발/Spring
MVC 디자인 패턴, 모델 속 요소들
hyemi_flora
2024. 5. 22. 17:36
MVC 디자인 패턴
- 프로그램을 효율적으로 개발하기 위해 코드를 3가지 종류로 구분하여 개발을 진행하는 디자인 패턴이다.
- 프로그램의 처리 로직과 화면 구현 로직을 구분하는 데 초점을 맞춘 디자인 패턴이다.
- Model, View, Controller로 나뉜다.
- Model: 데이터의 형태를 표현하기 위한 용도의 코드이다.
- DAO (Data Access Object): 데이터 접근 객체로, 데이터베이스와 상호작용하여 데이터를 조회, 삽입, 업데이트, 삭제하는 역할을 한다. ( JDBC 기능을 좀 더 편리하게 사용할 수 있도록 하는 것)
- DTO (Data Transfer Object): 데이터 전송 객체로, 데이터 전송에만 집중하며 비즈니스 로직을 포함하지 않는다.
- VO (Value Object): 값 객체로, 변하지 않는 데이터를 나타내는 데 사용된다. 객체의 동일성을 값 자체로 판단하며, 주로 불변(immutable) 특성을 가진다.
- Entity: 데이터베이스 테이블과 매핑되는 클래스이다. 주로 ORM(Object-Relational Mapping) 프레임워크인 JPA를 사용할 때 사용된다.
- Repository: 데이터 저장소를 의미하며, DAO와 유사하지만 더 고수준의 추상화를 제공한다. Spring Data JPA와 같은 프레임워크에서 자주 사용된다.
- Service: 비즈니스 로직을 구현하는 계층이다. 서비스 클래스는 여러 DAO를 조합하여 비즈니스 로직을 처리하고, Controller에 결과를 반환한다.
- Mapper: 데이터 전송 객체(DTO)와 엔티티(Entity) 간의 변환을 담당하는 클래스이다. 주로 MapStruct와 같은 라이브러리를 사용하여 자동으로 생성된다.
- Utility Classes: 모델 계층에서 공통적으로 사용되는 유틸리티 클래스들이다. 예를 들어, 날짜 변환, 문자열 처리 등의 기능을 제공할 수 있다.
- View: 사용자에게 보이는 부분을 구현하기 위한 용도의 코드이다. (JSP, HTML, CSS, JS 등)
- Controller: 사용자에게 보여지기 전 다양한 처리를 담당하는 용도의 코드이다.
클라이언트의 요청을 받아 적절한 서비스를 호출하고, 결과를 View에 전달한다.
(서비스: 요청을 받았을 때 어떤 처리를 해야 하는지, DAO: DB 접근, 처리 후 어떤 뷰로 가야 할지)