프로젝트의 구성
Presentation Tier(화면 계층)
화면에 보여주는 기술을 사용하는 영역
프로젝트의 성격에 맞춰 앱으로 제작하거나, 클라이언트-서버로 구성되는 경우가 있다.
스프링 MVC와 JSP등을 이용한 화면 구성이 이에 속한다.
Business Tier(비즈니스 계층)
순수한 비즈니스 로직을 담고 있는 영역
고객이 원하는 요구사항을 반영하는 계층이므로 중요하다.
영역의 설계는 고객의 요구사항과 정확히 일치해야한다.
주로 'xxxService'와 같은 이름으로 구성, 메서드의 이름 역시 고객들이 사용하는 용어 그대로 사용한다.
Persistence Tier(영속 계층 or 데이터 계층)
데이터를 어떤 방식으로 보관하고 사용하는가에 대한 설계가 들어가는 계층
일반적으로 데이터베이스를 많이 이용하지만, 네트워크 호출, 원격 호출 등의 기술이 접목될 수 있다.
일반적으로 웹 프로젝트를 다음과 같이 3-tier로 구성하는 이유
유지보수가 용이하고, 각 영역이 독립적으로 설계되어 특정 부분이 변하면 그 부분만 쉽게 변경이 가능하다.
스프링 MVC 영역
Presentation Tier를 구성하게 되는데, root-context.xml, servlet-context.xml 등의 설정 파일이 해당 영역의 설정을 담당한다.
스프링 Core 영역
흔히 POJO(Plain-Old-Java-Object)의 영역으로, 스프링의 의존성 주입을 이용해서 객체 간의 연관구조를 완성해서 사용한다.
MyBatis 영역
mybatis-spring을 이용해서 구성하는 영역으로, SQL에 대한 처리를 담당하는 구조이다.
프로젝트를 진행할 때 다음과 같은 네이밍 규칙을 가지고 작성한다.
- xxxController - 스프링 MVC에서 동작하는 Controller 클래스를 설계할 때 사용한다.
- xxxService - 비즈니스 영역을 담당하는 인터페이스는 'xxxService'라는 이름을 사용한다.
- xxxServiceImpl - 인터페이스를 구현한 클래스는 'xxxServiceImpl'라는 이름을 사용한다.
- xxxDao,xxxRepository - DAO(Data-Access-Object)나 Repository(저장소)라는 이름으로 영역을 따로 구성하는 것이 보편적이다. MyBatis 이용 시 별도의 DAO를 구성하는 대신 Mapper 인터페이스를 활용한다.
- VO(Value Object) - VO(Value Object)는 일반적으로 둘다 데이터를 담고 있는 객체를 의미한다. 주로 Read Only의 목적이 강하고 데이터 자체도 Immutable(불변)하게 설계한다.
- DTO(Data transfer object) - 일반적으로 데이터를 담고 있는 객체를 의미한다. 주로 데이터 수집의 용도가 좀 더 강하다. 예를 들어 웹 화면에서 로그인하는 정보를 DTO로 처리하는 방식을 사용한다.
출처: 코드로 배우는 스프링 웹 프로젝트 7장
용어 설명
- Mybatis - 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거한다. Mybatis에서는 프로그램에 있는 SQL 쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있다.
'개발 공부 > Spring' 카테고리의 다른 글
[Spring]Hikari CP(Connection Pool) (0) | 2021.07.13 |
---|---|
[Spring]스프링 어노테이션의 종류 (0) | 2021.07.10 |
[Spring]스프링 MVC의 기본 구조 (0) | 2021.07.10 |