이번 자료에서는 Layered Architecture에 대해 배우고 구현하는 실습을 진행합니다.

Layered Architecture란?

  1. 표현 계층 (Presentation Layer 또는 Controller Layer):
  2. 응용 계층 (Application Layer 또는 Service Layer):
  3. 데이터 액세스 계층 (Data Access Layer 또는 Persistence Layer):

Layered Architecture가 중요한 이유

  1. 모듈화와 분리: 각 레이어는 독립적으로 구현되므로, 시스템의 다른 부분에 영향을 미치지 않고 수정, 유지보수, 확장이 가능합니다. 예를 들어, 데이터 액세스 레이어에서 데이터베이스 접근 방법이 변경되어도 서비스 레이어 및 컨트롤러 레이어는 영향을 받지 않습니다.
  2. 재사용성: 각 레이어는 독립적으로 구성되어 있으므로 재사용이 용이합니다. 예를 들어, 서비스 레이어의 특정 기능을 다른 컨트롤러에서도 사용할 수 있습니다.
  3. 테스트 용이성: 각 레이어는 독립적으로 테스트할 수 있습니다. 이는 단위 테스트, 통합 테스트 등을 수행할 때 유용합니다. 또한 Mocking을 사용하여 특정 레이어의 의존성을 제거하여 테스트하기 쉽게 만들 수 있습니다.
  4. 확장성: 새로운 기능 또는 요구 사항이 추가될 때, 새로운 레이어를 추가하거나 기존의 레이어를 수정하여 시스템을 쉽게 확장할 수 있습니다. 예를 들어, 새로운 데이터 소스를 지원하기 위해 데이터 액세스 레이어를 추가할 수 있습니다.
  5. 관심사의 분리: 각 레이어는 특정한 관심사에만 집중하므로 코드의 가독성과 이해도를 향상시킵니다. 데이터 액세스 레이어는 데이터베이스와의 상호 작용에만 집중하고, 서비스 레이어는 비즈니스 로직을 처리하고, 컨트롤러 레이어는 요청과 응답을 처리합니다.

Data Object

  1. DTO (Data Transfer Object):
  2. VO (Value Object):