계층의 종류
- 프레젠테이션계층(Presenation Layer): 사용자 인터페이스를 담당하는 계층입니다. 웹 어플리케이션에서는 컨트롤러(Controlloer)와 뷰(View)로 구성되며, 사용자 요청을 처리하고, 응답을 생성합니다.
- 서비스계층(Service Layer): 비즈니스 로직을 처리하는 계층입니다. 프레젠테이션 계층과 데이터엑세스계층(Data Access Layer, 이하 DTA) 사이에서 중간 계층으로 사용되며, 비즈니스 로직을 처리하고 데이터를 가공합니다.
- 데이터엑세스계층(Data Access Layer): 데이터베이스와의 상호 작용을 담당하는 계층입니다. 데이터베이스와의 CRUD 작업을 수행하기 위해 사용되며, 주로 레포지토리(Repository) 또는 DAO라는 이름으로 구현됩니다.
- 데이터베이스계층(Database Layer): 데이터를 저장하고 관리하는 계층입니다. 데이터베이스와의 관련된 작업을 수행합니다.
- 도메인계층(Domain Layer): 도메인 계층은 소프트웨어 시스템에서 가장 핵심적인 계층으로, 비즈니스 로직을 담당하는 계층입니다. 이 계층에서는 사용자가 구체적으로 다루는 데이터와 해당 데이터와 관련된 비즈니스 규칙을 포함하는 도메인 객체를 정의하고, 해당 객체들 간의 상호작용을 구현합니다. 도메인 계층은 시스템 전반에 사용되며, 프렌젠테이션, 서비스, 데이터 엑세스 계층 등 다른 계층과 상호작용할 수 있습니다. 도메인 계층에서는 객체지향 프로그래밍 원칙과 디자인 패턴 등을 활용하여 유지보수성과 확장성이 높은 도메인 객체를 설계하고 구현해야합니다.
DAO(Data Access Object)
데이터베이스에서 데이터를 가져오거나 데이터를 저장하는 등의 CRUD 작업을 수행합니다.
레포지토리(Repository)
데이터베이스와의 상호작용을 담당하는 인터페이스. 레포지토리는 DAO와 동일한 역할을 수행하지만, DAO와 달리 비즈니스 로직을 포함하지 않습니다. 레포지토리는 도메인 클래스를 이용하여 데이터를 처리하며 CRUD 작업을 수행합니다.
도메인클래스(Domain Class)
특정도메인에서 사용되는 데이터를 표현하는 클래스입니다. 도메인 클래스는 업무로직에 밀접하게 관련된 데이터를 다루는데 사용됩니다. 도메인 클래스는 데이터베이스 테이블과 매핑되는 엔티티로 구현될 수 있습니다.
엔티티(Entity)
데이터베이스의 테이블과 매핑되는 클래스입니다. 엔티티는 JPA와 같은 ORM프레임워크를 이용하여 데이터베이스와 상호 작용하며, 도메인 클래스와 유사한 역할을 수행합니다.
DTO(Data Transfer Object)
서로 다른 계층간에 데이터를 전달하기 위한 객체입니다. 보통 클라이언트와 서버 사이, 또는 서비스 계층과 컨트롤러 계층 사이에서 데이터 전송을 위해 사용됩니다. DTO는 특정 계층에서 사용되는 도메인클래스와 달리, 다른 계층 간에 데이터를 전달하기 위한 목적으로 사용됨
VO(Value Object)
소프트웨어에서 사용되는 객체 중 하나로, 값을 저장하는 객체를 의미합니다. 예를 들어, 사용자의 이름, 아이디, 비밀번호 등을 저장하는 객체가 VO입니다. VO는 일반벅으로 불변 객체로 구현됩니다. VO는 DTO와 유사하게 사용되지만, VO는 읽기 전용으로 사용되는 것이 일반적입니다.