Akashic Records

EJB CMP의 단점 본문

오래된글/Java

EJB CMP의 단점

Andrew's Akashic Records 2018. 4. 7. 23:06
728x90

* CMP의 문제점

1. 어떤 빈의 상태는 복잡한 관계형 데이터베이스의 Join으로 정의될수 있고,

또 OLTP(online transaction processing)기반의 CICS(Customer Information Control System)같은 기존 시스템에 맵핑 될수도 있습니다. 이럴때는 빈의 필드를 데이터베이스에 맵핑시키는것이

오라클의 필드에 맵핑시키는 것처럼 쉬운것이 아니라 정교한 맵핑 툴을 써서 해야 하고,

맵핑이 되더라도 정상적으로 작동이 될꺼라는걸 장담 못한다는 거지요.

즉 다시 말하면 CMP는 관계형 데이터 베이스나 객체지향 데이터 베이스에 최적화 되어있다는 겁니다.

2. ejbLoad, ejbStore 메서드의 호출

다음에서보는 거와 같이 CMP의 경우 필요없는 메서드 호출이 반복되는 경우가 있습니다.

CMP의 경우 위의 두개의 메서드 호출 시기를 보면

ejbLoad : 항상 빈의 컨테이너 관리 필드를 데이터베이스와 동기화를 한 직후에 호출

ejbStore : 항상 데이터베이스가 빈 인스턴스의 상태와 동기화 되기 직전에 호출

BMP의 경우를 보면

ejbLoad, ejbStore : 컨테이너가 빈의 상태를 데이터베이스에 동기화 시키는것이 적당하다고

판단 될때 호출

그리고 다른걸 들자면 다 아시겠지만 CMP는 무겁다라는 것도 있지만 여기서는 그것은 별루

중요 내용이 될것 같지는 않군요.

-- < 알고 가자!! >

OLTP 란?

OLTP[오엘티피]는 일반적으로 은행이나, 항공사, 우편주문, 슈퍼마켓, 제조업체 등을 포함한 많은 산업체에서 데이터 입력이나 거래조회 등을 위한 트랜잭션 지향의 업무을 쉽게 관리해주는 프로그램이다. 아마도, 가장 광범위하게 설치된 OLTP 제품은 IBM의 CICS일 것이다.

오늘날 온라인 거래처리는 하나 이상의 회사가 관련되는 네트웍 트랜잭션을 지원해야하는 요구를 점점더 많이 받고 있다. 이러한 이유 때문에, 새로운 OLTP 소프트웨어는 트랜잭션들이 네트웍 상의 다른 컴퓨터 플랫폼들 위에서 실행될 수 있도록 해주는 클라이언트/서버 처리 및 브로커 소프트웨어를 사용한다

CICS 란?

CICS[씨아이 씨에스]는 IBM이 개발, 공급하는 전세계에서 가장 성공적인 OLTP (On Line Transaction Processing) 제품이다. 호스트, 각종 유닉스 및 윈도우NT까지 모두 지원하는 다양한 제품군으로 구성되어 있으며, 서버 버전 및 클라이언트 버전으로 구성된다. 즉, CICS/ESA, CICS/VSE, CICS/400, CICS/6000, CICS/OS2, CICS/윈도우NT, CICS/DEC, CICS/HP, CICS/Siemens Nixdorf SINIX, CICS/SUN 등 거의 모든 플랫폼을 지원한다.


* EJB는 왜 사용하는가?

음... 이건 생각 해보니깐 아주 원초적인 내용인데... 저 같은 경우는... EJB로 개발 하라고 해서

인데... ^^

EJB 컨테이너의 전신은 모두 미들웨어였다는걸 잘 알고계실겁니다.

그럼 미들웨어는 뭘하는 거야 하면?

두산백과 사전에 나오는 미들웨어 항목을 보면 다음과 같습니다.

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

분산 컴퓨팅 환경에서 서로 다른 기종간의 서버와 클라이언트들을 연결해주는 소프트웨어!

좁은 범위로는 한 기업에 설치된 다양한 하드웨어, 네트워크 프로토콜, 응용 프로그램, 근거리통신망 환경, PC 환경 및 운영체제의 차이를 메워주는 소프트웨어를 말한다. 즉, 복잡한 이기종(異機種) 환경에서 응용 프로그램과 운영환경 간에 원만한 통신을 이룰 수 있게 해주는 소프트웨어이다.


인터넷의 보급과 중앙에 집중된 메인프레임(mainframe) 컴퓨팅 파워를 업무의 특성에 따라 다중의 호스트(host)로 분리하고자 하는 다운사이징(downsizing) 기법, 기존에 구축된 독립적인 이기종의 시스템들을 하나의 네트워크로 연결하고자 하는 SI(system integration:시스템통합) 기법이 등장하면서 기존의 집중식 컴퓨팅(centralized computing)은 급격히 분산 컴퓨팅(distributed computing)으로 변하였다.


분산 컴퓨팅은 초고속정보통신망 통신망의 구축이 확산됨에 따라 그 중요성이 부각되고 있지만, 이를 실현하기 위해서는 서로 다른 운영체제와 서버 프로그램과의 호환성뿐만 아니라 이종(異種)의 통신 프로토콜을 사용하는 네트워크 간의 접속, 네트워크 자원에 대한 접근, 그리고 시스템을 연결해 단일한 사용자 환경으로 만들어 주는 것이 필수적이다.


이처럼 분산 컴퓨팅 환경을 구현하는데 발생하는 여러 문제점들을 해결하기 위해 등장한 소프트웨어가 미들웨어(middleware)이다. TCP/IP, 데이터베이스 액세스 미들웨어, DCOM(Distributed Component Object Model:분산컴포넌트객체기술) , CORBA(Common Object Request Broker Architecture:코바) 등의 분산기술이 이에 해당한다.

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

결국 시대가 분산 컴퓨팅을 원하게 되었고 엔터프라이즈급 분산 어플리케이션이 나오게 된겁니다.

하지만 왜 자바로 구현한 분산 어플리케이션(EJB)을 사용하는가?

그건 다음의 자바의 강력함 때문입니다.

1. 간단 명료함

2. 강력함(포인터 사용 안함, 메모리 유출 없음, 예외 상황 핸들링 기능 등)

3. 분산 애플리케이션 배치를 간단하게 할 수 있는 풍부한 컴포넌트 모델 제공

4. 코드 이식성( “한번 만들면 어디서나 수행가능”)

5. 뛰어난 상호 운영성( ‘고객’, ‘계정’, ‘돈’ 등과 같이 고수준 비즈니스 객체를 통하여 투명하게 통신이 가능”)

이러한 여러 가지 잇점들 때문에 C++이나 코볼로 비즈니스 로직을 구사하는 것보다 자바를 사용한다합니다.^^


728x90

'오래된글 > Java' 카테고리의 다른 글

Java Threads  (0) 2018.04.07
EJB 트렌젝션의 종류  (0) 2018.04.07
Scrolling Result Sets  (0) 2018.04.07
JDBC driver types  (0) 2018.04.07
객체 저장 : Storing Classes, Images and Other Large Objects  (0) 2018.04.07
Comments