비즈니스 티어에서
This presentation is the property of its rightful owner.
Sponsored Links
1 / 51

비즈니스 티어에서 디자인 고려사항과 위험 사례 PowerPoint PPT Presentation


  • 135 Views
  • Uploaded on
  • Presentation posted in: General

비즈니스 티어에서 디자인 고려사항과 위험 사례. 방수상. 학습전략 , 목표. 현실세계의 비즈니스를 통해 J2EE 환경의 비즈니스를 편하고 친근감있게 접근해 보자 . 앞으로 배워나갈 Business Tier 가 어떤것들이 있는지 알아보자 . 이것을 통해 얻을 수 있는것은 무엇인지 토론해보자. Business?. 사무 , 업무 , 일 , 집무 , 영업 직업 , 가업. 우리 제품 좀 사주세요. 예방주사를 맞는경우. 한번 골라봐 ~. 너무 많이 샀다ㅡㅡ ; 계산은 …. J2EE. J. ava.

Download Presentation

비즈니스 티어에서 디자인 고려사항과 위험 사례

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6229874

비즈니스 티어에서 디자인 고려사항과 위험 사례

방수상


6229874

학습전략,목표

  • 현실세계의 비즈니스를 통해 J2EE 환경의 비즈니스를 편하고 친근감있게 접근해 보자.

  • 앞으로 배워나갈 Business Tier가 어떤것들이 있는지 알아보자.

  • 이것을 통해 얻을 수 있는것은 무엇인지 토론해보자.


Business

Business?

  • 사무, 업무, 일, 집무, 영업

  • 직업, 가업


6229874

우리 제품 좀 사주세요.


6229874

예방주사를 맞는경우


6229874

한번 골라봐~


6229874

너무 많이 샀다ㅡㅡ;

계산은…


6229874

J2EE

J

ava

2

PlatForm

E

nterprise

E

dition


J2ee architecture

J2EE Architecture

http://snippetstore.sourceforge.net/en-US/SnippetStore1.htm


J2ee architecture1

J2EE Architecture


6229874

비즈니스 티어에서 디자인 고려사항

  • EJB.

  • 세션 빈

  • 엔티티 빈


6229874

세션 빈 사용하기

Transfer Object

Session Facade

DATABASE


6229874

세션 빈사용하기

SessionBean

CLIENT

SessionBean


6229874

Business Object

Entity Bean

or

Session Bean

Application Service


Sessionbean vs entitybean

SessionBean vs EntityBean

비즈니스관리

데이타베이스관리

비영속성

영속성

시간제한

장시간제공

하나의클라이언트

다중사용자

stateless, stateful

CMP, BMP

Transaction 인식


Stateless vs stateful

Stateless vs Stateful

상태비유지

상태유지

대화상태 비저장

대화상태유지

세션 빈 공유

세션 빈 공유불가능

비대화식 프로세스

대화식 프로세스


6229874

비즈니스 티어에 상태 저장

HttpSession에 상태저장하기

JSP/

서블릿

엔터프라이즈

데이터베이스

클라이언트

상태

클라이언트

티어

프레젠테이션

티어

비즈니스

티어

리소스

티어


6229874

비즈니스 티어에 상태 저장

세션 빈에 상태저장하기

JSP/

서블릿

엔터프라이즈

데이터베이스

클라이언트

클라이언트

상태

클라이언트

티어

프레젠테이션

티어

비즈니스

티어

리소스

티어


6229874

엔티티빈

  • 분산(distributed)

  • 공유(shared)

  • 트랜잭션(transactional)

  • 영구(persistent)


6229874

엔티티빈 기본키

  • 고유한 기본키에 의해 식별

  • findByPrimaryKey 직접구현


6229874

엔티티빈에 비즈니스 로직 두기

  • 엔티티빈에는 비즈니스 로직을 포함해서는 안된다고 오해하고 있다.

  • 엔티티빈는 객체뷰제공뿐 아니라 다중사용자를 위한 트랜잭션 처리역할도 수행할 수 있다.


6229874

엔티티빈을 이용한

출금(비즈니스로직)처리


6229874

엔티티빈 이용시 유의사항

  • 비즈니스 로직 안에 엔티티빈 상호 관계에 관한 로직이 들어가는가?

  • 엔티티빈이 사용자와 상호작용하는 워크플로를 관리하는 역할을 맡고 있는가?

  • 해당 엔티티빈이 다른 비즈니스 컴포넌트에 포함된 역할도 맡고 있는가?


6229874

비즈니스 티어와

통합 티어에서

위험사례


6229874

1.객체 모델을 직접 엔티티빈 모델로 매핑하는 사례

문제

클래스 와 엔티티빈을 일대일로 변환.

해법

큰 단위 엔티티빈 설계

리팩토링 : 엔티티빈 상호통신 줄이기

패턴 : Composite Entity 패턴


6229874

2.관계 모델을 직접 엔티티빈 모델로 매핑하는 사례

문제

테이블의 각 행(row)을 엔티티빈 하나로 설계하는 경우.

해법

EJB가 아닌 객체지향접근방식

리팩토링 : 엔티티빈 상호통신 줄이기, 비즈니스 로직을 세션 빈으로 옮기기

패턴 : Composite Entity 패턴


6229874

3. 각 유스케이스마다 세션 빈 하나를 매핑하는 사례

문제

한 가지 유형의 상호작용에 반응하기 위해 작은단위 컨트로러들을 많이 만들경우 많은 세션 빈이 필요하며 애플리케이션이 매우 복잡해진다..

해법

관련이 있는 상호작용들을 묶어 하나의 빈에 통합

리팩토링 : 세션 빈 병합하기

패턴 : Session Facade 패턴


4 getter setter

4.모든 엔터프라이즈 빈 속성을 getter/setter 메소드를 사용해서 노출하는 사례

문제

객체 속성 정보를 얻기 위하여 작은 단위 원격호출이 빈번함.

해법

값 객체를 사용하여 전송

패턴 : Transfer Object 패턴


5 lookup

5.클라이언트에 서비스 검색(lookup) 코드를 둔는 사례

문제

클라이언트에 JNDI lookup 코드를 넣으면 서비스 lookup 코드 수정시 모든 클라이언트 수정. 또한 lookup 코드에 종속됨.

해법

Servie Locator 패턴을 사용하여 캡슐화

패턴 : Service Locator, Business Delegate 패턴


Business delegate

Business Delegate 사용

EJB

Session

Bean

Client

Order order = lookup(“ejb/.../orderEJB);

order.getMyOrderList();

OrderDelegate order = new OrderDelegate();

order.getMyOrderList();

Business Delegate

init(){

this.order = (OrderHome)ServiceLocator.getEjbLocalHome........;

}

getMyOrderList(){

order.getMyOrderList();

}


6229874

6.읽기 전용 객체로 엔티티빈을 사용하는 사례

문제

데이터베이스처럼 영구 저장소에 불필요한 업데이트 트랜잭션을 발생.

해법

Data Access Object 패턴을 사용하여 데이터 소스로 접근하는 로직을 캡슐화

패턴 : Data Access Object, Session Façade, Value List Handler, Transfer Object Accembler 패턴


6229874

엔티티빈사용하기

세션 빈사용하기

Transfer Object

Session Facade

DataBase


6229874

7.작은 단위 객체로 엔티티빈을 사용하는 사례

문제

작은단위객체를 표현하기 위해 원격 엔티티빈을 사용하는 경우, 전체네트워크통신과 컨테이너에 과부하를 일으킨다.

해법

큰단위 엔티티빈과 세션 빈을 설계.

패턴 : Composite Entity, Session Façade 패턴

리팩토링 : 엔티티빈 상호 통신줄이기, 비즈니스 로직을 세션 빈으로 옮기기, 엔티티빈에 비즈니스 로직 두기, 세션 빈 병합하기


6229874

8. 종속 객체를 포함한 엔티티 빈 전체를 저장하는 사례

문제

하나의 엔티티 빈 안에 종속 객체들이 트리 구조를 이루고 있는 경우, 엔티티 빈을 로드할 때 종속 객체를 포함한 전체 트리를 로드하고 저장하기 때문에 성능이 저하된다.

해법

영구 저장소에 저장한 이후에 변경 여부를 체크하고 변경이 있는 경우에만 종속 객체를 저장.

패턴 : Composite Entity 패턴과 Store Optimization 전략, Lazy Loading 전략


9 ejb ejb

9.EJB 관련 예외가 EJB가 아닌 클라이언트에 노출되는 사례

문제

애플리케이션개발자도 비즈니스 티어 컴포넌트가 던지는 예외의 세부 구현이 어떻게 이루어져 있는지 알아야 한다.

해법

비즈니스 대리자가 모든 서비스 관련 예외를 중간에서 가로채어 애플리케이션 예외로 바꾸어 던짐.

패턴 : Business Deleagte 패턴

리팩토링 : Business Deleagte 도입


6229874

10.큰 결과 집합을 반환하기 위해 엔티티 빈 파인더 메소드를 사용하는 사례

문제

대량의데이터를 검색해서 가져와야 할 경우 EJB 파인더 메소드(원격참조컬렉션 리턴)를 사용하게 되면 클라이언트는 원격 참조 메소드를 호출해야 한다.

해법

원격 호출 대신에 세션 빈과 DAO 를 사용해 Transfer Object 객체를 얻어오는 쿼리를 구현.

패턴 : Value List handler, Data Access Object 패턴


6229874

11.클라이언트가 비즈니스 컴포넌트로부터 데이터를 모으는 사례

문제

데이터 모델을 구현한 비즈니스 컴포넌트에서 필요한 데이터 모델을 가져오기 위해서 다양한 비즈니스 컴포넌트로부터 데이터를 찾고 상호작용하고 추출해야 한다. 이때 비즈니스 티어를 수 차례 호출해야 하므로 네트워크에 과부하를 일으킬 수 있다.

해법

모델을 생성하는 작업을 클라이언트에서 분리하고 비즈니스 컴포넌트로 구현.

패턴 : Transfer Object Assembler 패턴


6229874

12.엔터프라이즈 빈에서 오랜 시간이 걸리는 트랜잭션을 처리하는 사례

문제

엔터프라이즈 빈 메소드가 클라이언트 요청을 처리하는 데 상당히 많은 시간이 걸린다거나 처리가 진행되는 동안 메소드가 블로킹되면, 이로 인해 빈이 사용하는 메모리와 스레드와 같은 컨테이너 리소스 역시 블로킹되는 결과를 가져옴.

해법

시간이 오래 걸리는 트랜잭션을 구현하려면 JMS API를 제공하는 MOM 을 사용하여 비동기식 처리.

패턴 : Service Activator 패턴


6229874

13.상태비유지 세션 빈이 매 호출마다 대화 상태를 재구성하는 사례

문제

세션 빈이 대화상태를 유지해야 하는 경우에도 상태비유지 세션 빈으로 설계할 경우 메소드를 호출할 때마다 대화상태를 재구성(DB Access)해야 한다.

해법

상태비유지 세션 빈을 선택하기 전에 어떤 형태로 상호작용이 진행되는지 그 모델을 먼저 분석한다.

패턴 : Transfer Object Assembler 패턴


6229874

J2EE 환경에서

비즈니스 티어를 구현하기 위해

많은 사항들을 고려해야 하며,

적절한 패턴을 사용해야 한다.


6229874

J2EE 패턴과 병행 학습

  • EJB 3.0

  • Spring 2.5

  • 그 밖에…


6229874

참고문헌 & 자료

  • 코어 J2EE 패턴

  • http://www.corej2eepatterns.com/

  • http://snippetstore.sourceforge.net/en-US/SnippetStore1.htm

  • http://www.imageclick.com

  • 장회수


  • Login