티스토리 뷰
1️⃣ MVC란?M: Model (모델)V: View (뷰)C: Controller (컨트롤러)즉, 앱이나 웹에서 역할을 나눠서 구조화한 디자인 패턴이에요.각각의 역할을 분리하면 코드 유지보수가 쉬워지고, 개발 효율이 올라가요.
2️⃣ 각 구성 요소 설명
🔹 Model (모델)
- 역할: 데이터와 비즈니스 로직 담당
- DB에서 데이터를 가져오고, VO/DTO를 통해 데이터를 담음
- DAO도 모델 계층에 포함되는 경우가 많음
- 예시: UserVO, UserDAO
🔹 View (뷰)
- 역할: 사용자에게 보여주는 화면
- 데이터를 받아서 화면에 출력
- 예시: JSP, HTML, Android Activity/Fragment
🔹 Controller (컨트롤러)
- 역할: 사용자 요청 처리 + 모델과 뷰 연결
- 사용자의 액션(버튼 클릭, URL 요청)을 받아 모델에서 데이터 가져오고 뷰로 전달
- 예시: Spring의 @Controller 클래스
3️⃣ MVC 동작 흐름
사용자 요청 → Controller → Model(DAO/VO) → DB ↑ ↓ └──────────── View로 데이터 전달 ─────┘
- 사용자가 버튼 클릭 → Controller 호출
- Controller가 필요하면 Model에서 데이터 가져오기 → VO/DAO
- Controller가 View에 데이터 전달 → 화면에 표시
1️⃣ VO (Value Object)
- 역할: 데이터 그 자체를 담는 객체. DB에서 가져온 데이터나 화면에서 받아온 데이터를 객체 단위로 저장.
- 특징: 필드 + getter/setter 정도. 로직은 거의 없음.
- 예시: 사용자 정보
public class UserVO { private String id; private String name; private int age; // getter, setter }
2️⃣ DAO (Data Access Object)
- 역할: DB와 직접 연결되어 데이터를 가져오거나 저장하는 객체.
- 특징: SQL 실행, Connection 관리, CRUD 처리 등.
- 예시: 사용자 정보 가져오기
public class UserDAO { public UserVO getUserById(String id) { // DB 연결, SELECT 실행, UserVO에 데이터 담기 } }
3️⃣ Controller
- 역할: 사용자의 요청을 받고, 필요한 데이터를 DAO를 통해 가져와, 화면(View)로 전달.
- 특징: 비즈니스 로직 최소, 요청-응답 흐름 제어.
- 예시:
public class UserController { private UserDAO userDAO = new UserDAO(); public void handleRequest(String userId) { UserVO user = userDAO.getUserById(userId); // user 정보를 View에 전달 } }
🔹 순서 흐름
실제 요청 처리 순서를 보면 이렇게 돼요:
사용자 요청 → Controller → DAO → DB → DAO → VO에 담기 → Controller → View
즉:
- Controller: “누가 뭐를 요청했는지 판단”
- DAO: “DB에서 데이터를 가져와”
- VO: “데이터를 객체로 담아”
- Controller → View: “화면에 전달”
정리하면:
계층역할
VO | 데이터 담는 객체 |
DAO | DB 접근/조작 |
Controller | 요청 처리 및 흐름 제어 |
1️⃣ VO (Value Object)
- 역할: 데이터 그 자체를 읽기/쓰기 가능한 객체로 담는 용도
- 특징: 주로 DB에서 가져온 데이터나 화면 입력 데이터를 한 번에 묶어서 전달
- 사용 예: UserVO → id, name, age 필드를 가진 객체
- 주의: 로직 거의 없음, 값 자체를 표현
public class UserVO { private String id; private String name; private int age; // getter, setter }
2️⃣ DTO (Data Transfer Object)
- 역할: 데이터를 계층 간에 전송할 때 사용하는 객체
- 특징:
- VO와 거의 비슷하게 데이터를 담음
- 하지만 주 목적이 전송임 → 클라이언트 ↔ 서버, 계층 ↔ 계층
- DB 저장용이 아닌, 전송용
- 사용 예: 서버에서 사용자 정보를 API 응답으로 전달
public class UserDTO { private String id; private String name; // 필요 없는 DB 컬럼 제외 // getter, setter }
3️⃣ DAO (Data Access Object)
- 역할: 데이터베이스 접근 담당
- DB와 직접 연결해서 CRUD 처리
- VO/DTO를 받아서 DB에 넣거나, DB에서 가져온 데이터를 VO/DTO로 반환
- 예시:
public class UserDAO { public UserVO getUser(String id) { ... } // DB에서 데이터 가져와 VO 반환 public void saveUser(UserVO user) { ... } // VO 데이터를 DB에 저장 }
🔹 요약 비교표
구분목적포함하는 것계층특징
VO | 데이터 자체 | DB 컬럼과 동일 | Model | 값 객체, 로직 거의 없음 |
DTO | 데이터 전송 | 필요한 데이터만 | Service / Controller ↔ Client | 계층 간 데이터 전달용 |
DAO | DB 접근 | SQL / Connection | Model | CRUD 처리, DB와 직접 연결 |
💡 정리 포인트
- DAO → DB 담당
- VO → DB 데이터 담는 용기
- DTO → DB/VO에서 필요한 데이터만 가져와 전송하는 용기
'IT용어 & 정보' 카테고리의 다른 글
내부망, 외부망, 사설망, 공인망 (0) | 2025.09.25 |
---|---|
Json, XML (0) | 2025.09.24 |
Java EE, Java SE (0) | 2025.09.24 |
젠킨스(Jenkins) (0) | 2025.09.24 |
CVE(Common Vulnerabilities and Exposures) (0) | 2023.10.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ASCII
- sql 노랭이 정오표
- tns:프로토콜 어댑터 오류
- intellij 프로젝트 생성 방법
- android studio 구 버전
- dell 윈도우
- dell 윈도우 재설치
- oracle xe
- intellij 설치 방법
- dell 윈도우 복구
- codepen 티스토리 연동
- 정오표
- 노랭이 정오표
- android studio 구버전
- IntelliJ
- sql 테스트 사이트
- oracle
- 웹에서 sql 테스트 사이트
- PCCE
- intellij 무료 버전 설치
- 이기적 sql 개발자 이론서+기출문제 정오표
- intellij 다운로드 소스 코드 실행 방법
- 로직 연습
- release period
- intellij 무료 버전 설치 방법
- codepen 연동
- sql 자격검정 실전문제 정오표
- sqld
- android studio download
- tns:protocol adaptor error
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함