티스토리 뷰

반응형

MVC 패턴 / 비즈니스로직 / DAO / DTO

MVC

사용자의 요청방식에는(글쓰기,삭제,수정,업데이트.../서블릿 하나도 다할수도 있고 서블릿을 종류마다 나눠서 할 수도 있음/ 마찬가지로 서비스도 여러개로 줄 수 있고 하나로만 할 수도있음)-(HTML)Get(select용도-thread safe (여러번요청문제없음)) / (HTML)Post(insert용도 not thread safe (여러번 동시요청시 에러)) / put(update)/delete 등이 있음

MVC1

: 뷰 컨트롤러를 같이처리해버림/빠르게 여러기능을 한곳에서 다처리해버리는 것처럼 역할분담을 하지않고 mvc2에 비해 단순로직처리

MVC2

기능별 뷰 컨트롤러...를 나누어 작업 / 경우에 따라서 단순기능의 작업을 하는 경우 mvc1이 더 유용할 수도 있으나 , 여러 기능을 처리하는 작업을 하는 경우 나중의 유지보수를 편하게 할 수 있는 mvc2방식이 더 효율적일 수 있다.

- Model (*.java 클래스 / Service, DAO, DTO, VO ) - 데이터의 값과 상태 및 각 종 기능을 처리하는 비지니스 로직

- 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;

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
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
31
글 보관함