본문 바로가기

개발/Java

[Java] 자바 - MVC 패턴

 

< MVC 패턴 > 

 

M : Model 데이터와 관련된 역할 수행
(데이터를 담거나(VO - Value Object),
  DB에 접근해서 데이터 입출력(DAO - Data Access Object))
V : View 사용자가 보게 될 시각적인 요소(화면)
(입력 / 출력)
C : Controller 사용자의 요청을 받아서 처리 후, 응답화면을 지정하는 역할

* View에서만 출력문(System.out.print)을 사용

* Model의 DAO(Data Access Object)에서만 DB에 직접적으로 접근한 후, 해당 SQL문을 실행한 결과를 받음

 

 


 

< VO - Value Object >

 

- DB 테이블의 컬럼들과 유사하게 필드를 구성하여 데이터를 담는 객체

- SEQUENCE 객체와 DEFAULT(기본값)등의 조건으로 값이 들어가는 경우,

  해당 필드를 뺀 생성자를 작성 

 

 

< DAO - Data Access Object >

 

- 데이터베이스 관련 작업(CRUD*)을 전문적으로 담당하는 객체

- 내부의 메소드를 데이터베이스와 관련된 작업으로 작성

- Controller를 통해 호출되어 기능을 수행

- DB에 직접적으로 접근한 후, 해당 SQL문을 실행 및 결과 받음 (JDBC)

* CRUD : CREATE, READ, UPDATE, DELETE

 

 

< Controller >

 

- View를 통해서 호출되어, View에서 요청한 기능을 처리

- 해당 메소드로 전달된 데이터를 가공처리 한 후, DAO의 메소드 호출

- DAO로부터 반환 받은 결과에 따라서 사용자가 보게 될 View(응답 화면)을 결정

 

 

< View >

 

- 사용자가 보게 될 시각적인 요소(화면)

- 입력 및 출력 기능 담당

 

 

 


* UPDATE *

 

 

< VO >

 

테이블의 한 행(row)이랑 데이터를 매핑하기 위함 == 값을 담기 위해서



< VO 클래스의 특징 >


- 필드 / 생성자 / 메소드
=> 필드 : 테이블을 보고 자료형을 맞춤
=> 메소드 : 필드의 상태를 변화시킬 수 있는 getter/setter 
     +  equals() / hashcode() - 오버라이딩해서 가져야 함*


* 필요한 이유
new 해서 객체를 올리기때문에 주소값은 다름, 그러나 같은 객체로 인식하기 위해서는???
equals와 hashcode메소드를 오버라이딩해서 가지고 있어야 한다.

DB에서 같은 행에 매핑되는 객체가 있으면,
오버라이딩한 equals()와 hashCode()를 사용해서 같은 객체로 인식해야 함
====> hashset에서 사용

 

 

 

 

'개발 > Java' 카테고리의 다른 글

[Java] JDBC - 개요 / 역할 / 객체  (1) 2022.10.05
[Java] 자바 - 컬렉션 - Properties  (0) 2022.09.25
[Java] 자바 - 컬렉션 - HashMap  (0) 2022.09.25
[Java] 자바 - 컬렉션 - HashSet  (0) 2022.09.25
[Java] 자바 - 컬렉션 - ArrayList  (1) 2022.09.25