MVC모델 (Model-View-Controller)
소프트웨어 디자인 패턴
DB : 데이터가 모여있는 기지
DBMS : DB를 관리해주는 것
데이터베이스만 같으면 DBMS가 달라도 문법이 다 똑같다.
DBMS가 없으면 컴파일러 없이 개발하는 것과 똑같다.
main은 View에 딱 하나 있다.
선언은 Controller에서,
그 사용은 View에서.
MVC 모델은 금방 설계되지만 유지보수가 어렵다.
MVC2는 설계에 시간이 걸리지만 유지보수가 좋다.
Model
: 내가 프로젝트를 개발할 때 사용될 모든 변수들을 담아주는 것
- VO(Value Object), DTO(Data Transfer Object) :
사용할 변수들 선언- private로 한다. (다른 곳에서 직접 접근하게 되면 설계오류/보안성 떨어짐.)
예)UserVO- DB에서 데이터를 가져온다.
DB 개수와 Model의 개수가 같아야 한다.
View
- 보여지는 view단 구성(선언이 아닌 실행)
Controller
- DAO(Data Access Object) : 기능들 선언
예)UserDAO
자 지금부터는 MVC 패턴으로 학생 관리 프로그램을 짜보도록 하겠다.
이클립스를 사용하였고
DTO, View, DAO 크게 세가지로 나뉘었으며
각각 M , V , C 의 역할을 담당한다.
먼저 dto 라는 패키지를 만들고 StudentVO 클래스를 추가하였다.
name, age, number, seq 4개의 private 변수를 만들었고, 이는 외부에서 접근하지 못하도록 하기 위함이다.
빈 생성자와 name과 age가 매개변수로 들어있는 생성자를 만들어주었고,
이 두 가지의 getter setter도 만들어주었다.
number는 getter만 만들어주었다.
number는 자동으로 1씩 증가하도록 ++seq를 붙여주었고
이를 통해 우린 학생 정보가 하나씩 늘어날수록 그 갯수를 알 수 있도록 할 것이다.
다음으로는 dao 패키지를 만들고 ScoreDAO 클래스를 추가하였다.
index join list search update delete 기능을 추가할 것이고
view역할을 할 index를 여기서 만든 후 View 클래스에서 호출할 것이다.
view 패키지 생성 후 View 클래스를 만든다
출력해보자 !
학생 관리 시스템
1. 등록
2. 검색
3. 삭제
4. 수정
5. 나가기
======[학생정보 입력(종료는 q)]======
이름 : 최동민
나이 : 27
국어 영어 수학 점수를 입력하세요
100 90 20
90 90 90
종료?
q를 누르면 종료, 그렇지 않으면 계속해서 입력 가능
======[가입 목록]======
번호 : 1 / 이름 : 최동민 / 나이 : 27살
90점 90점 90점
번호 : 2 / 이름 : 홍길동 / 나이 : 30살
90점 90점 90점
번호 : 3 / 이름 : 임꺽정 / 나이 : 20살
100점 100점 100점
총 3명의 학생 정보를 등록했다.
검색할 학생의 이름 :
최동민
=====[검색 결과]=====
번호 : 1 / 이름 : 최동민 / 나이 : 27살
국어 영어 수학
90점 90점 90점
검색도 해보고
삭제할 학생의 번호를 입력하세요.
1
삭제 완료
======[가입 목록]======
번호 : 2 / 이름 : 홍길동 / 나이 : 30살
90점 90점 90점
번호 : 3 / 이름 : 임꺽정 / 나이 : 20살
100점 100점 100점
삭제도 해보고
수정할 학생의 번호 :
2
1.정보수정
2.점수수정
1
이름과 나이를 순서대로 입력하세요
김길동 29
수정 완료
======[가입 목록]======
번호 : 2 / 이름 : 김길동 / 나이 : 29살
90점 90점 90점
번호 : 3 / 이름 : 임꺽정 / 나이 : 20살
100점 100점 100점
정보수정도 해보고
수정할 학생의 번호 :
3
1.정보수정
2.점수수정
2
국어 영어 수학 점수를 순서대로 입력하세요
10 10 10
수정 완료
======[가입 목록]======
번호 : 2 / 이름 : 김길동 / 나이 : 29살
90점 90점 90점
번호 : 3 / 이름 : 임꺽정 / 나이 : 20살
10점 10점 10점
점수수정도 해봤다.
마치며
처음 시작할 때에는 막연한 느낌이 들었다.
특히 Set, Map, Iterator의 사용이 복잡하게 느껴졌고 키와 값을 통해 접근하는 것도 쉽지 않았다. 각 기능 별 메소드를 구현해나가는 부분에도 뭘 어떻게 적어야 할지를 몰라 많이 헤매는 시간을 가졌다.
MVC 패턴으로 끝내고 난 후 느낀 점은 협업할 시에는 물론 실무에 나가기 전 동료들과 프로젝트를 해나갈 때에도 이것이 핵심이 되는 아주 중요한 방법이겠다는 생각이 들었다. 아직까지는 솔직하게 말해서 쉽지 않은게 사실이지만 코드를 지우고 몇번을 다시 반복 중이다. 패턴을 익히는 데에 도움이 되고 있고 이 연습 방법이 지금 나한테 가장 잘 맞는 듯 하다.