Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- err_connection_refused
- 타입스크립트
- interface
- array
- 리액트네이티브아이콘
- react
- javascript
- 스크롤이벤트
- npm에러
- Next.js
- 상속
- async
- 이진탐색
- reactnative
- app:compiledebugkotlin
- 슬라이딩윈도우
- map
- forwardref type
- 안드로이드빌드에러
- reactnative error
- mainapplication.kt
- Filter
- set
- app.post
- generic
- materialicons
- extends
- TS
- 배열중복요소제거
- Spring
Archives
- Today
- Total
rhanziy
Spring - 계층 구조 본문
대부분의 기능 구현 작업순서는
VO, DTO(도메인 모델 계층) -> Mapper(퍼시스턴스 계층) -> Service(비즈니스 계층) -> Controller(제어 계층) -> JSP(프리젠테이션 계층) 순으로 작업된다.
도메인 모델 계층
- 도메인 모델은 각 계층간의 전달 되어야 할 정보를 담는 객체 입니다.
- 해당 객체에 담긴 데이터들은 캡슐화해서 보관됩니다. ( 데이터의 접근자 private / getter,setter를 통해 데이터 접근)
퍼시스턴트 계층
- DAO 계층이라고도 불립니다.
- DB 질의를 통해서 데이터 러치를 담당하는 객체입니다.
비즈니스 계층
- 핵심 업무 로직의 구현과 그에 관련된 데이터의 적합성 검증 외에도 다양한 부가적인 구현을 수행합니다.(ex. 트랜잭션 처 리, 다른 계층들간 통신을 위한 인터페이스 제공, 해당 계층의 객체들간의 관계를 관리 등..)
- 퍼시스턴트 계층과 제어 계층을 연결 하는 역할을 합니다.
제어 계층
- 사용자로부터 요청을 받고 응답을 처리하는 계층입니다.
- 전체 시스템의 설정 상태를 유지합니다.
- 사용자의 요청을 검증하고 필요시 비즈니스 계층에 필요 로직을 요청 후, 전달 받은 응답을 적절한 뷰에 연결합니다.
프리젠테이션 계층
- 사용자와 애플리케이션 간 인터페이스 역할을 합니다.
- 사용자가 선택할 수 있는 기능이 표시되어 있어야 하며, 요청에 필요한 부가적 정보 전달을 위한 입력양식이 있어야 합니다.
- 애플리케이션으로부터 전달 받은 데이터를 효과적으로 보여주기 위한 로직이 포함 됩니다.
DAO
- DAO(Data Access Object) 는 데이터베이스의 data에 접근하기 위한 객체입니다. DataBase에 접근 하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용합니다.
DTO
- DTO(Data Transfer Object) 는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)입니다.
- 유저가 입력한 데이터를 DB에 넣는 과정을 보겠습니다.
- 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송합니다.
- 해당 DTO를 받은 서버가 DAO를 이용하여 데이터베이스로 데이터를 집어넣습니다.
VO
- VO(Value Object) 값 오브젝트로써 값을 위해 쓰입니다. read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가집니다.
- DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변할 수 있습니다.
DTO는 인스턴스 개념이고 VO는 리터럴 값 개념이다.
VO는 값들에 대해 Read-Only를 보장해줘야 존재의 신뢰성이 확보되지만 DTO의 경우는 단지 데이터를 담는 그릇의 역할일 뿐 값은 그저 전달되어야 할 대상일 뿐이다.
값 자체에 의미가 있는 VO와 전달될 데이터를 보존해야하는 DTO의 특성상 개념이 다르다.
'Java' 카테고리의 다른 글
Spring - @ModelAttribute (feat. @RequestParam) (0) | 2023.05.26 |
---|---|
SQL - 페이징 기능 구현 쿼리 (0) | 2023.04.27 |
Spring - Spring Interceptor 실습 (0) | 2023.04.21 |
Spring - Spring Interceptor 스프링 인터셉터 (0) | 2023.04.21 |
SQL - 쿼리 분석 (0) | 2023.04.18 |
Comments