Model이란?
객체지향프로그래밍에서 클래스를 역할에 따라 부르는 이름을 모델(Model)이라고 부른다.
모델의 종류는 크게 메인클래스, DTO, VO, DAO, Utility 등이 있다.
메인클래스 | DTO(Data Transfer Object), VO(Value Object) | DAO(Data Access Object) | Utility |
---|---|---|---|
시작 클래스(모델) | 데이터를 담는(이동) 모델 | 데이터를 처리(DB)를 하는 모델, 주로 CRUD 처리를 한다. | 도움(Utility)을 주는 모델 |
DTO, VO 모델이란?
- 데이터를 하나로 묶어야 될 경우 데이터를 하나로 수집하는 역할을 하는 바구니가 필요. 이 바구니 역할을 하는 것이 DTO, VO 모델
- DTO와 VO는 서로 비슷한 개념이지만 DTO는 값을 전달하는 동작을 수행하고 VO는 값 그자체이다.
그렇기 때문에 VO는 setter와 같은 새로운 값 지정 메서드 절대 사용 ❌
해당 메서드에 객체의 정보를 인자로 일일히 넘겨주어야 메인메서드가 아닌 다른 객체의 정보를 출력할 수 있다.
인자가 한두개면 상관 없지만 100개, 1000개처럼 수많은 인자를 다 적기엔 너무 힘들다.
👉 수많은 인자를 가지고 있는 모델을 만들어 사용하자! 그것이 DTO, VO
DTO 클래스를 만든다 ~
메인 클래스와 출력 메서드 부분을 위와 같이 수정하면 처음과 똑같이 작동한다. 처음보다 훨씬 간결해진 것을 확인할 수 있다.
😍 DTO와 VO를 사용하는 이유 증명!
DAO란?
데이터베이스에 데이터를 저장, 수정, 검색, 삭제를 하기 위해서 만들어지는 모델
CRUD 동작을 가지고있는 클래스
비지니스 로직을 처리하는 클래스
홈페이지 회원가입을 예로 들어본다.
유저는 회원가입 폼에 양식을 입력하고 회원가입 버튼을 누르면 회원가입이 진행된다.
개발자는 이 과정들을 구현하기 위해 생각보다 많은 코드를 짜야한다.
이 때 아이디 중복찾기를 예시로 들면 아래와 같다.
1. 회원이 작성한 아이디 값을 저장
2. 회원정보가 있는 데이터베이스 연결
3. 데이터베이스에 회원이 작성한 아이디 값이 있는지 중복검사
4. 회원의 아이디가 이미 있는지 없는지 여부를 데이터화 하여 저장
5. 데이터베이스 연결 끊기
6. View 영역에게 가공된 데이터 전달
이와 같은 과정을 우리는 비지니스 로직이라고 한다.