본문 바로가기
Language & Library/JSP

model1 vs model2 차이점 / 자바빈즈 /트랜잭션

by 댓츠굿 2013. 3. 11.

2tier -> 3 tier(n tier)



웹 1.0 -> 웹 2.0(참여, 공유, 개방 : 클라이언트가 고객이면서 소비자가 됨 ex)위키피디아, 지식인)


유지보수성이 없으면 사라진다. ex)web 2.0은 영원한 beta(계속 업데이트가 된다-지속적인 유지보수) - 세션에 저장(정보수집)


예전에는 공간(창고)때문에 잘팔린 상품만 팜.(선택과 집중 방식)

롱테일(The Long Tail) : 온라인에서 공간과 시간적 제약이 사라진다. ex) 모든 물건 취급, 아마존 사이트


Servlet

Controller(제어)[비유:콜센터(패턴)] - 요청 분석, 모델 연동, 결과 view 선택

view - 화면표현

jsp


- 핵심적으로 model1 VS model2 차이점

   계층이 분화된다

   Controller부분이 필요(컨트롤러과 뷰과 나눠졌다. why? web2.0 때문에)


client      ->(request) ->    controller

jsp는 보여주는 부분에 집중함.


호출방식 2개 redirect,

-----------------------------------------------------------------------------------------------------------------


Model1

- JSP 파일내에서 뷰와 컨트롤러 모두 실행되어 지는 구조



○ 장점

- 개발 기간 단축(단순한 페이지 흐름)

- 팀원의 수준이 높이 않아도 된다. 즉 초보자도 쉽게 배울 수 있다.

- 중소형 프로젝트에 적합


○ 단점

- 웹 어플리케이션이 복잡해질수록 유지보수가 어렵다.

- 디자이너와 개발자간의 의사소통이 필요하다.(비니니스 로직과 뷰 사이의 구분이 미비하다.)


Model2

- Controller(servlet)을 통해 비지니스 로직과 뷰가 분리된 형태

- JSP에서는 뷰를 담당하고, 자바 클래스에서 비지니스 로직을 담당한다.



○ 장점

- 비지니스 로직과 뷰의 분리로 유지보수와 확장이 용이하다.

- 개발자와 디자이너의 작업이 분리되어 분업이 편리하다.


○ 단점

- 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.

- 개발자들이 구조에 대한 이해가 필요하기 때문에 팀원의 높은 수준이 요구된다.


원문 : http://kiringun.egloos.com/660489


----------------------------------------------------------------------------------------------------------------


MVC 패턴

1. Model1과 Model2
1) Model1
- 뷰와 컨트롤러가 같은 JSP 안에서 실행
- 간단한 웹어플리케이션을 구축할 때 적당
- 개발기간 단축
- 유지보수가 어려움
- 디자이너와 개발자간의 의사소통이 필요

2. Model2
- 컨트롤러와 뷰가 엄격히 구분
- 뷰는 어떠한 처리로직도 포함하지 않음
- 사용자 요청의 진입점은 컨트롤러인 servlet이 담당 모든 흐름을 통제
- 유지 보수 확장이 용이
- 개발자와 디자이너의 작업이 분리
- 중 대형 프로젝트에 적합
- 초기에 구조 설계 시간이 많이 필요

2. MVC 패턴
1) View
- 화면에 내용을 보여주는 역할
- JSP 페이지

2) Model
- 로직을 가지고 있는 부분
- DB와 연동 데이터를 가져와 작업을 처리하거나 처리한 작업의 결과를 데이터로서 DB에 저장
- 데이터를 생성, 저장, 처리하는 역할을 담당

3) Controller
- 어플리케이션의 흐름을 제어 (view와 model사이)
- 서블릿 컨트롤러 사용

효과적인 디자인은 차후 애플리케이션에 대한 유지보수 및 확장의 측면에 있어서 비용을

결정하는 큰 요소로서 작용할 수 있는 부분이다.

여기서는 JSP Model 1 Architecture와 JSP Model 2 Architecture에 대하여 살펴보도록 하자.



JSP Model 1 Architecure

가장 전형적으로 구성할 수 있는 웹환경은 request에 의한 처리를 JSP페이지로서 이용하며,

request의 데이터를 추출하여 JavaBeans를 이용한 기존 datasource의 이용 및 EIS환경에 접속하여

일을 수행할 수 있는 형태를 취하고 있는 경우가 대부분이었는데 그림으로 도식화하여 보면

아래와 같다.



위의 형태를 가르켜 JSP Model 1 Architecture라고 하는데 이 경우 client에서 들어오는

request부분에 대한 처리와 beans에서 처리된 결과 response가 JSP페이지에 의하여 모두

처리되는 것을 볼 수 있다. 또한 모든 데이터 액세스 또는 처리가 beans에서 처리되고

있으므로 contents와 로직의 분리라는 장점을 잘 살리고 있다. 하지만 위의 구조는 간단한

애플리케이션에 적합한 구조지 점점 복잡, 대형화되고 있는 추세에는 적합하지 못한

구조를 가지고 있다. 프로젝트 구축에 필요한 JSP페이지 및 scriptlet이 많아지면 많아질수록

어떤 정형화된 틀에 있지 않은 이상 Beans와 JSP페이지는 아주 복잡하게 뒤섞이는 결과를

초래하게 될 것이 분명하다. 또한 MVC 패턴에 또한 부합되지 않는 형태를 취하고 있다.

이 문제는 오로지 request에 의한 처리를 JSP 페이지에 의하여 처리하기 때문에 나타나는

문제일 수 있는데 이를 해결하기 위한 Servlet과 JSP양쪽을 사용하는 Model 2 Architecture의

사용이 나타나게 된다.

JSP Model 2 Architecture

Model 2의 구조도는 아래와 같다.



위의 구조가 Model1과 어떤 차이점을 보이는 것일까? Model1에서의 JSP페이지는 MVC의

형태로 놓고 보았을 때, view의 측면과 controller의 측면 모두를 담당하고 있는 형태를

취하고 있다.

이를 servlet을 client의 request를 처리할 수 있는 영역으로 두고 JSP와 Servlet 양쪽 모두를

사용하여 동적인 웹을 제공함에 있어 각각의 기술이 취할 수 있는 장점을 합성해 놓은

형태로 보아도 될 것이다. 즉 JSP는 presentation을 생성해내는 부분으로 사용하고,

Servlet은 프로세스만을 집중적으로 수행할 수 있는 형태를 제공하게 된다.

여기서 servlet은 controller로서 행동을 하게 되며 사용자의 action에 따라 JSP에서 사용되는

어떠한 객체나 business logic에 대한 class 및 beans를 instantiate하는 역할을 담당하고

forward시키게 된다. 이는 프로젝트 개발에 있어서 디자이너와 개발자의 책임과 권한을

좀 더 명확하게 할 수 있는 구조이며, 더 나아가 아주 복잡한 애플리케이션을 작성했을

경우 controller부분을 정형화된 framework으로 구성하게 된다면 빠른 시간안에 목적을

달성할 수 있는 효과적인 구조로 변화시킬 수 있는 장점을 가지게 된다.

현재 진행중인 자바 프로젝트의 경우나 기존에 Sun Microsystems에서 내놓았던 J2EE Blueprint의

web-tier architecture의 경우 이와 같은 구조로 구성되어 있음을 볼 수 있다

출처 : http://blog.naver.com/wooltary7


----------------------------------------------------------------------------------------------------------------

▣ 자바빈즈란?

자바빈즈(JavaBeans)란 데이터의 집합을 표현하기 위한 클래스로써, 예를 들어 회원 자바빈즈라고 하면 회원의 이름, 나이, 주민등록번호, 직업과 같은 데이터를 멤버변수로 가지고 있는 클래스를 말한다. 자바빈즈는 자바빈즈 객체를 만들고, 객체가 가진 멤버변수에 값을 할당하며 값을 추출하기 위한 용도로 사용된다.

□ 자바빈즈
◇ 데이터의 집합을 표현하기 위한 클래스
◇ 객체가 가진 멤버변수에 값을 할당하고 추출하기 위한 용도로 사용

자바빈즈를 사용함으로써 JSP 코드와 데이터를 분리할 수 있다는 장점을 얻을 수 있다.

□ 자바빈즈의 장점
◇ 비즈니스 로직과 표현을 위한 코드를 분리할 수 있다.
◇ 이로써 재사용 가능한 컴포넌트를 만들 수 있다.


▣ 자바빈즈의 구성

자바빈즈는 데이터를 표현하기 위한 하나의 완전한 자바 클래스로써 생성자를 가질 수 있으며, 객체의 데이터를 나타내는 멤버변수를 갖는다. 또한 멤버변수에 값을 할당하고 추출하기 위한  set~, get~ 형태의 멤버메소드를 포함한다.

□ 자바빈즈의 구성
◇ 생성자
◇ 멤버변수
◇ set~ 멤버메소드
◇ get~ 멤버메소드


[참고] http://www.jabook.com 



-----------------------------------------------------------------------------------------------------------------


-트랜잭션

트랜잭션은 하나의 논리적 작업 단위로 수행되는 일련의 작업이다. 단순히 이야기하면, ‘SQL 의 묶음이라고 할 수 있다. SQL 의 묶음에는 SELECT/ INSERT/UPDATE/DELETE가 주로 해당된다. 따라서 트랜잭션을 데이터를 변경시키는 INSERT, UPDATE, DELETE의 묶음이라고 생각해도 된다.

BEGIN TRANSACTION ( 또는 BEGIN TRAN )

SQL 문장들

ROLLBACK TRANSACTION

COMMIT TRANSACTION( 또는 COMMIT TRAN 또는 COMMIT WORK)

-. ROLLBACK TRANSACTION을 사용하면 현재의 트랜잭션들이 모두 취소된다.

-. 데이터의 무결성 : ‘전부 되거나, 전부 안 되거나이다. , 하나의 트랜잭션이 전부 적용이 되거나 또는 전부 적용이 안 되어야지, 일부만 적용된다면 데이터의 무결성을 보장할 수 없다.

반응형