티스토리 뷰
MVC 패턴 / 비즈니스로직 / DAO / DTO
MVC

사용자의 요청방식에는(글쓰기,삭제,수정,업데이트.../서블릿 하나도 다할수도 있고 서블릿을 종류마다 나눠서 할 수도 있음/ 마찬가지로 서비스도 여러개로 줄 수 있고 하나로만 할 수도있음)-(HTML)Get(select용도-thread safe (여러번요청문제없음)) / (HTML)Post(insert용도 not thread safe (여러번 동시요청시 에러)) / put(update)/delete 등이 있음
MVC1
: 뷰 컨트롤러를 같이처리해버림/빠르게 여러기능을 한곳에서 다처리해버리는 것처럼 역할분담을 하지않고 mvc2에 비해 단순로직처리
MVC2
기능별 뷰 컨트롤러...를 나누어 작업 / 경우에 따라서 단순기능의 작업을 하는 경우 mvc1이 더 유용할 수도 있으나 , 여러 기능을 처리하는 작업을 하는 경우 나중의 유지보수를 편하게 할 수 있는 mvc2방식이 더 효율적일 수 있다.
- View (*.html / *.jsp) - 사용자가 보는 화면 UI (HTML TAG, Jsp 등을 이용하여 사용자에게 보여질 UI페이지
- Controller (*.jsp /서블릿/스트럿츠Action 스프링Controller..)-뷰에서 받은 의미를 해석하고 판단하여 모델에 요청. 프로그램의 전체 흐름 처리
( View < - > Controller < - > Modell < - > DB )
사용자가 view에서 2개의 수를 입력하는 것을 MVC 패턴의 로직을 정리하면,
사용자는 시각적으로 보고있는UI를 통해 View에 접근중 -> ex) 사용자가 2개의 수를 DB에 입력 전송 - 이벤트 ->컨트롤러(Controller)에게 요청을 한다. Controller는 해당 이벤트를 분별하여 Model을 참조 / Model 은 데이터베이스 처리 등 관련 이벤트 데이터를 처리하고 그 결과를 Controller에게 전달/ 컨트롤러는 Model로 부터 얻은 데이터를 다시 View에 전달한다
결국 어떤 프로젝트를 할 때 mvc1 ,mvc2중 무엇을 쓸지는 프로젝트 성향에 맞게 적용하는 융통성이 필요해 보인다.
---------------------------------------------------------------------------------------------------
(Business Logic)-개발자가 만드는곳 / (presentation Logic)-디자이너가만드는곳 화면처리소스)
GUITEST(화면처리)<->클래스1(서비스(db연동해서 원하는데이터 넣고 빼고 이런거말고 추가작업:보안,트랜잭션처리 등)<->클래스2
(DAO: Data Access Object)- DB연동코드 <-> DB
( 클래스1없다면 오라클이 MySQL로 바뀌게되면 GUITEST도 MYSQL형식으로 바꿔야함)->이러한 의존성 감소 시키기위해 클래스1-서비스를 둠 –유연성 증가시킴 )
Service - DAO에 접근에서 Select,Update, Delete , insert ...호출해줌 (여기에 보안등 추가작업을 여기서 해줄 수 있음) 서비스.java 단에서는 SQL문이 있으면 안됨 모든 SQL문은 DAO.java에서 나
---------
클래스1(서비스)는 여러개 만들 수 있음(ex slect용, insert용... 나누는 이유는 GUITEST(client용)의 기능들이 많으면 클래스1(서비스)의 기능구현 코드들이 많아짐으로서 기능이 많을때는 나누는게 좋음! ) ,하나로도만들 수 있고(간단할때는)
----
DTO패턴 –Entity클래스, (Data Transfer Object – value object(CVO)- Domain Object)
- sql
create table board
(num number(4) primary key,
author varchar2(20) not null,
title varchar2(20) not null,
content varchar2(4000),
writeday date default sysdate,
readcnt number(4) default 0 );
create sequence board_seq;
insert into board (num, author, title, content)
values(board_seq.nextval,'홍길동','테스트1','테스트2');
insert into board (num, author, title, content)
values(board_seq.nextval , '네이즈','패션','인대');
insert into board (num, author, title, content)
values( board_seq.nextval,'이건호','이건','호호');
commit;
select num, author, title, to_char(writeday, 'YYYY/MM/DD') writreday, readcnt
from board;
'it' 카테고리의 다른 글
| 카카오뱅크 점검시간? (0) | 2023.02.25 |
|---|---|
| C언어 구구단 출력 (0) | 2023.02.24 |
| Webtob 설치 (0) | 2023.02.22 |
| Springi Transaction 9-4 Annotation을 이용한 트랜잭션 처리 (0) | 2023.02.21 |
| 분산-기억장치 시스템 구조 -선형 배열(linear array) 구조 (0) | 2023.02.20 |
