MVC 패턴은 Model, View, Controller의 약자를 합친 디자인 패턴 중 하나. 이러한 패턴을 통해 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것이며 특정한 규칙을 가지고 만들어진다. 또 MVC패턴의 경우 1과 2가 있는데 1의 문제를 보안해서 나온 것이 바로 2이다. 1의 경우 유지보수가 힘들기 때문에 단점을 보완하기 위해 나온 모델이며 Controller와 View를 모두 JSP가 조종한 1의 경우와 달리 View만 JSP가 건드리는 구조다.
Model : 서비스, DAO(Data Access Object), DTO(Data Transger Object), VO(Value Object), Entity로 구성된다.
View : HTML
Controller : Controller(컨트롤러, 엔드포인트)
이러한 MVC 패턴을 더욱 자세히 알아보려면 WA(Web Application)의 구성요소를 알아야 함
Controller : 사용자(client)의 요청을 받을 때 특정 주소(Path, URL)와 메서드를 맵핑(Mapping) 하기 위해 존재함. 받을 주소를 설정하고 거기에 맞는 콘솔의 찍힐 메서드를 생성해줘서 맵핑해줘야 됨. 맵핑은 무언가를 연결해주기 위해 대응시켜주는 거라고 생각하는데 이게 맞는 건가??..
DAO : 데이터베이스에 접근하기 위한 객체.(서비스에서 필요에 따라 접근 가능). 데이터베이스에 접근하려면 메서드를 만들어 줘야겠네.. 그렇다 하면 만들어진 메서드를 어떤 타입으로 설정할지에 관해 생각해봐야 되고 또 각각의 데이터베이스를 연결해주려면 Connection을 해줘야 되고 Preparestatement를 이용해줘야겠네. 그러고 나서 각각의 데이터베이스를 SELLECT, DELETE, INSERT 할지에 관해 생각해봐야겠지
DTO, VO : 각 계층 간에 데이터를 전달하고자 할 때 사용. DTO는 Getter/Setter 메서드만 가짐. VO는 Getter/Setter 메서드 외 로직을 가진다. 두 개가 쓰임이 비슷한 거 같은데 VO가 조금 더 범용성이 있다고 생각하면 될 듯. 비슷하다고 생각하자.
Entity(Model) : DTO, VO랑 유사, 데이터베이스 테이블이 가지는 열(Column)과 1:1 멤버 변수 관계를 가진다. Entity를 통해 데이터베이스의 Column을 하나씩 가지고 오면 됨. 여기서도 Getter/Setter를 만들어 줘야겠네.
Interceptor : 요청이 컨트롤러로 전달되기 전에, 설정된 특정 주소 패턴에 대해 공통적으로 특정 로직을 처리하고자 할 때 사용한다. 중간에 낚아챈다고 생각하면 되나..
Contigurer : 스프링 구성요소나 외부 의존성에 대한 설정을 하기 위한 클래스.

아직 까지 MVC는 익숙하지 않아서 그런가.. 구조적으로는 알겠는데 막상 쓰라고 하면 쓰지 못하겠...
많이 만들어 보면 감이 좀 올 거 같긴 한데 그러기에는 자바 실력도 아직 부족한 거 같음.
'Spring Boot' 카테고리의 다른 글
무작정 Spring#2(insert) (0) | 2022.06.12 |
---|---|
무작정 Spring #1(기본 설정) (0) | 2022.06.11 |
ORM(MyBatis) (0) | 2022.06.10 |
Spring project 만들시 처리해야 할 것 (0) | 2022.06.10 |
Connection, PreparedStatement (0) | 2022.06.01 |