KR20030056153A - Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법 - Google Patents

Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법 Download PDF

Info

Publication number
KR20030056153A
KR20030056153A KR1020010086320A KR20010086320A KR20030056153A KR 20030056153 A KR20030056153 A KR 20030056153A KR 1020010086320 A KR1020010086320 A KR 1020010086320A KR 20010086320 A KR20010086320 A KR 20010086320A KR 20030056153 A KR20030056153 A KR 20030056153A
Authority
KR
South Korea
Prior art keywords
bean
partner
ejb
source
persistent state
Prior art date
Application number
KR1020010086320A
Other languages
English (en)
Other versions
KR100490750B1 (ko
Inventor
김성훈
김중배
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2001-0086320A priority Critical patent/KR100490750B1/ko
Publication of KR20030056153A publication Critical patent/KR20030056153A/ko
Application granted granted Critical
Publication of KR100490750B1 publication Critical patent/KR100490750B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema

Abstract

본 발명은 엔터프라이즈 응용 시스템을 개발하기 위한 서버측 자바 표준인 SUN 사의 EJB 2.0 규격의 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계의 관리 방법에 관한 것으로, 특히 EJB 2.0 규격의 CMP 엔터티 빈의 CMR에 대한 서버측 처리 방법에 관한 것이다. 본 발명은, 먼저 EJB 클라이언트가 서버측의 EJB 빈 객체의 CMR 메소드를 호출하였을 때, EJB 엔터티 빈 간의 관계 (1:1, 1:M 또는 M:1)를 파악하여 이를 메모리 상의 상태 객체에 설정하는 단계, 분산 트랜잭션 완료 후, 설정된 메모리 상의 상태 객체의 관계 필드 값과 외래키 값을 참조하여 실제 RDBMS 상의 데이터베이스 테이블의 형과 메모리 필드의 형을 매핑하여 SQL 쿼리를 생성하는 단계, 생성된 SQL 쿼리를 실제 데이터베이스에 적용하는 단계를 포함한다. 본 발명의 방법에 의하면, EJB 2.0 규격의 웹 응용서버 시스템을 작성할 때, EJB 규격에 명시한 바와 같이 개발자가 관계형 데이터베이스의 테이블 조인 작업을 직접 코딩하지 않고, 컨테이너가 자동화할 수 있는 방법을 제공함으로써, EJB를 이용하여 기업의 업무 로직을 개발할 때의 생산성 향상과 유지, 보수 비용의 절감 효과를 가져올 수 있다.

Description

EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호관계 관리 방법{METHOD FOR AUTOMATICALLY MANAGING RELATION BETWEEN DATABASE ENTITIES REPRESENTED BY USING PERSISTENT STATE OBJECT OF ENTERPRISE JAVABEANS}
본 발명은 비즈니스 업무 로직을 작성하는 서버측 분산 컴포넌트 기반 소프트웨어 분야에 속하며, 특히 자바 기반의 관계형 데이터베이스 관련 미들웨어 분야에 관련된다. 본 발명은 CMP(Container Managed Persistence) 필드를 자동으로 관리하는 부분과 더불어 EJB(Enterprise JavaBeans) 규격을 구현한 응용서버 시스템의 영속성 관리 모듈에 응용할 수 있는 미들웨어 시스템에 관한 것이다.
최근 인터넷 전자상거래, 기업의 인트라넷 정보 시스템이 웹 환경으로의 전환되고 인터넷 포털 시스템이 활성화됨에 따라서, 대용량 비즈니스 업무처리와 업무 로직의 재사용 및 분해조립이 가능하고 개발 및 유지 보수가 편리한 분산 컴포넌트 기반의 응용 서버 시스템의 중요성이 크게 부각되고 있다. 또한, 기업간의 시스템 호환을 위해서 표준화된 개발 API와 이를 통한 비즈니스 응용의 개발이 요구되고 있다.
만약 상기와 같은 분산 컴포넌트 기반의 응용 서버 시스템 및 이를 위한 API(Application Programming Interface) 없이 복잡한 기업용 응용 시스템을 개발한다면, 개발자들은 데이터베이스 관련 로직 뿐만 아니라 EIS 시스템들에 대한 분산 트랜잭션 관리, 사용자에 대한 인증 및 접근 권한 검사, 로직 객체의 인스턴스 관리, 상태 관리와 같은 역할을 담당하는 미들웨어 부분을 직접 코딩해야 할 것이다. 또한, 구축된 시스템을 다른 시스템에 이식하거나, 또 다른 시스템을 작성하고자 할 때는, 개발자가 매번 상기와 같은 역할을 하는 미들웨어 부분을 직접 코딩해야 할 것이다. 응용서버 시스템은 이와 같이 개발자들에 의해 공통적으로 필요한 미들웨어 부분과 비즈니스 로직을 개발, 배포, 구동하기 위한 표준 분산 컴포넌트 아키텍쳐(EJB)를 구현한 컨테이너 부분을 포함하고 있어서, 개발자들이 미들웨어에 대한 부분을 직접 코딩하지 않고 단순히 비즈니스 로직만 코딩함으로써 개발 생산성을 높일 수 있는 시스템이다. 또한, 표준의 분산 컴포넌트 아키텍처에 의해 개발된 비즈니스 로직은 EJB를 지원하는 어떠한 응용서버 시스템에서도 구동이 가능하기 때문에 로직의 재사용성을 높일 수 있다.
EJB는 이러한 기업형 응용 시스템 개발자들의 요구사항을 충족하기 위하여 SUN 사에 의해 추진되는 산업계 표준 분산 컴포넌트 아키텍처이다. EJB는 기업형 비즈니스 응용을 작성하는 개발자들에게 빈 객체의 생명주기 관리, 인증 및 접근권한 검사, 분산 트랜잭션 처리, 사용자 및 객체의 상태관리, 멀티 쓰레드, 커넥션 풀링, 영속성 관리 등과 같은 복잡한 하부 미들웨어의 코딩없이 손쉽게 응용 서버 시스템을 개발할 수 있도록 함으로써, 개발 생산성과 비즈니스 업무의 호환성을 높일 수 있다.
EJB 규격 및 본 발명에서 언급되는 영속성의 개념은 영구 저장 매체인 데이터베이스에 데이터를 저장하는 것을 의미한다, 즉, 메모리 상의 변수와 RDBMS의 특정 기억장소를 매핑시켜서 변수의 값의 변화가 영구 저장 매체에 자동으로 반영되게 하는 기능이다. EJB 규격의 엔터티 빈은 RDBMS 테이블의 로(row) 엔터티를 표현하는 객체이며, 만일, 엔터티 빈에서 제공하는 메소드를 이용하여 빈의 속성을 변경하면, 이 변경은 RDBMS 상의 해당 테이블의 해당 컬럼의 값에 자동으로 반영되는 것이다. 이때, 엔터티 빈을 참조하는 측에서는 전혀 데이터베이스의 테이블 구조 및 RDBMS와의 통신을 고려하지 않게 된다. RDBMS와의 통신을 고려하지 않는다는 것은 SQL 문을 전혀 사용할 필요가 없음을 의미한다. 그러나, 빈에서 영속성 관리 코드를 직접 코딩하는 Bean Managed 방식(BMP EJB 엔터티 빈)의 빈 개발자는 데이터베이스와 객체를 매핑시키는 작업을 스스로 해야 하므로, 어쩔 수 없이 SQL를 다루게 된다. 그러나, 본 발명의 대상인 영속성을 컨테이너가 자동으로 관리하는 Container Managed 방식(CMP EJB 엔터티 빈)의 경우에는, 데이터베이스 매핑 작업을 EBJ 서버의 공급자가 제공하는 툴이 대신 수행하기 때문에, 엔터티 빈을 만들거나 사용하는 측에서 SQL을 전혀 사용할 필요가 없게 된다.
EJB 규격은 현재 버전 2.0 상태이며, 기존의 1.1 규격에 대해 JMS를 준수하는 메시지 서버로부터 전송된 메시지를 처리할 수 있는 메시지 빈의 개념과 상기에서 설명한 엔터티 빈의 개념과 더불어 CMR(Container Managed Relationship)의 개념을 추가하였다. CMR의 개념은 상기의 엔터티 빈의 속성에 주키(Primary Key)를 포함한 필드 값만을 포함하던 개념에 관리 필드 또는 외래키(Foreign Key)를 포함하고, 이에 대한 클라이언트의 속성 변경 즉, 조인 처리를 컨테이너가 자동으로 관리하는 개념이라 할 수 있다.
본 발명은, 현재 상용화된 응용서버 시스템이나 오픈 소스 프로젝트의 EJB 서버 시스템에 적용될 수 있는 CMR 속성의 set 또는 get 메소드에 대한 서버측 처리방법을 제공하고, 단순하고 자동화된 조인 작업의 처리, 메모리 상에서 표현되는 영속성 객체의 상태 관리의 구현 방법을 제공함으로써, 기존 EJB 서버의 구현상의 복잡함으로 인해 발생되는 서버의 전체적인 성능 저하의 단점을 보완하는 것을 목적으로 한다.
도 1은 본 발명에 따른 방법이 사용되는 전체 시스템의 구성을 나타내는 블록도이고,
도 2는 도 1에 도시된 CMR 메소드 처리 과정을 구체적으로 나타낸 흐름도이고,
도 3은 도 2에 도시된 get 메소드 처리의 과정을 구체적으로 나타낸 흐름도이고,
도 4a는 소스 빈과 파트너 빈의 상호관계가 1:1인 경우의 예를 나타내는 도이고,
도 4b는 도 4a에 도시된 경우의 set 메소드의 처리과정을 구체적으로 나타낸 흐름도이고,
도 5a는 소스 빈과 파트너 빈의 상호관계가 1:M인 경우의 예를 나타내는 도이고,
도 5b는 도 5a에 도시된 경우의 set 메소드의 처리과정을 구체적으로 나타낸흐름도이고,
도 6a는 소스 빈과 파트너 빈의 상호관계가 M:1인 경우의 예를 나타내는 도이고,
도 6b는 도 6a에 도시된 경우의 set 메소드의 처리과정을 구체적으로 나타낸 흐름도이다.
<도면의 주요부분에 대한 부호의 설명>
101 : EJB 엔터티 빈 104 : 영속 EJB 엔터티 빈
109 : CMP 필드 관리자 110 : CMR 필드 관리자
112 : Query 관리자 113 : 컨테이너
상기와 같은 목적을 달성하기 위하여, 본 발명에 따른 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법은, EJB 클라이언트가 EJB 서버측의 소스 빈의 CMR(Container Managed Relationship) 메소드를 호출하면, 상기 소스 빈과 파트너 빈의 상호관계(1:1, 1:M 또는 M:1)를 파악하는 상호관계 파악 단계와, 상기 호출된 메소드의 종류 및 상기 파악된 관계에 따라서, 상기 호출된 메소드를 처리하는 메소드 처리 단계와, 상기 메소드 처리 단계의 처리 결과를 RDBMS의 데이터베이스에 적용하는 단계를 포함한다.
이하에서 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세히 설명하기로 한다. 이 기술 분야의 숙련자라면 이 실시 예를 통해 본 발명의 목적, 특징 및 이점들을 잘 이해할 수 있을 것이다.
먼저, 도 1은 본 발명에 따른 방법이 사용되는 전체 시스템의 구성을 나타낸다.
도 1을 참조하면, EJB 개발자는 RDBMS 상의 로(row) 데이터를 표현하는 EJB 엔터티 빈(101)을 추상 객체(abstract object)로써 생성한다(102). 여기서, 엔터티(Entity)는 일반적으로 기업에서 관심을 가지고 정보화할 수 있는 사람, 위치, 목적물, 개념, 활동 그리고 사건 등으로 정의할 수 있다.
그리고 나서, 작성된 EJB 엔터티 빈(101)을 EJB 서버에 의해 제공되는 도구를 사용하여 유형 객체(Concrete Object) 또는 영속 EJB 엔터티 빈(104) 및 RDBMS의 상태 정보를 담고 있는 영속 상태 객체(Persistent State Object)(105)로 생성하여(103), 컨테이너(113)에 배포한다. 여기서, 컨테이너는 세션 빈, 엔터티 빈, 메시지 빈으로 구성된 EJB 빈의 상태 정보와 개발자가 생성한 메터 데이터, 예를 들어 보안관련 정보, CMR 관련 정보, 트랜잭션 정보 등, 인스턴스의 생명주기 등을 관리하고 최종적으로 메소드의 호출을 담당하는 EJB 서버상의 모듈이다.
유형객체(104)는 컨테이너(113)에 의해 관리되며, 데이터베이스와 매핑되는 필드에 관한 메소드(get 또는 set)와 테이블 간의 관계(Foreign Key)에 관한 메소드(get 또는 set)로 구성되어, 실제로 EJB 서버에서 클라이언트의 빈 메소드 호출에 대해 동작하는 객체이다. 개발자는 상기의 메소드를 제외한 나머지 비즈니스 메소드를 추상 객체에 추가한다. 영속 상태 객체(105)는 RDBMS 테이블의 각 컬럼에 해당되는 정보 속성(주기, 외래키 등)을 담고 있는 EJB 엔터티 빈의 인스턴스 마다 존재하는 속성 객체이다.
클라이언트 사용자(106)로부터 요청된 영속 필드에 관한 처리(107)는 CMP 필드 관리자(109)에 의해 수행되고(108), 테이블 간의 관계 필드에 관한 처리는 CMR 필드 관리자(110)에 의해 수행되어(111), 먼저, 메모리에 존재하는 영속 상태 객체의 값을 변경하고 최종적으로 메소드의 실행 동안 발생된 분산 트랜잭션이 커밋되거나, 분산 트랜잭션 없이 메소드 호출이 실행된 경우에는 메소드 호출이 종료되었을 때 쿼리 관리자(112)에 의해 SQL 형식의 쿼리로 생성되어 RDBMS 상의 값을 변경하게 된다.
이하 도 2 내지 6을 참조하여, 본 발명에 의한 방법의 세부적 단계를 설명한다.
도 2는 도 1에 도시된 CMR 필드 관리자(110)의 CMR 메소드 처리 과정을 구체적으로 나타낸 흐름도이다.
도 2에 도시된 바와 같이, 클라이언트 사용자(106)가 EJB 엔터티 빈의 CMR get 또는 set 메소드를 호출하면(단계 201), 컨테이너(113)는 먼저 호출된 소스 빈과 파트너 빈과의 관계 정보를 검색하고(단계 202), 클라이언트 사용자(106)가 호출한 메소드가 set 메소드인가 get에 따라 메소드의 처리를 분기한다(단계 203). 이때, 설정 정보는 개발자에 의해 설정되며, 컨테이너(113)가 빈 객체를 서버에 배치할 때, 컨테이너(113)가 정보를 로딩하여 관리한다. 만약 클라이언트 사용자(106)가 호출한 메소드가 CMR get 메소드일 경우에, 컨테이너(113)는 get 메소드에 대한 처리를 수행하고(단계 204), set 메소드일 경우에는 빈 간의 관계에 따라 처리가 또 다시 분기된다(단계 205 내지 207). 그리고 나서, 영속 상태 객체(105)의 관계 필드 값과 외래키 값을 변경 처리한 다음(단계 208), 추후에 분산 트랜잭션이 커밋되거나 메소드 호출이 완료되면, 쿼리 관리자(112)를 통해 RDBMS 상의 데이터베이스에 변경된 정보를 반영하는 조인 처리를 수행한다(단계 209).
상기 set 메소드 및 get 메소드의 예를 구체적으로 설명하면 다음과 같다. 우선 get 메소드에 대한 예를 설명하면, 전자상거래 쇼핑몰 시스템에서 주문 정보를 나타내는 주문 테이블과 상품 정보 테이블이 있는 경우, 주문 테이블은 주문한 사용자의 상품 목록의 주키인 주문 번호, 주문훈 상품 번호, 사용자 번호 정보 등을 담고 있고, 상품 번호는 상품 정보 테이블을 참조하는 외래키로 설정된다. 상품 정보 테이블은 주키인 상품 번호, 상품 이름 등의 순수 상품 정보만을 담는다. 이때, 시스템 개발자가 EJB 엔터티 빈으로 소스 빈인 상품 정보 테이블의 엔터티(RDBMS 상의 로 데이터)와 파트너 빈인 주문 정보 테이블의 엔터티를 표현하는 빈을 작성하면, 두 엔터티 빈은 RDBMS 상의 주키와 외래키 관계를 갖는 빈으로써 관계 필드에 관한 메소드의 모든 처리는 컨테이너에 의해서 관리된다.
클라이언트(개발자 또는 쇼핑몰 사용자)가 특정 상품 번호에 대해 모든 주문 번호를 요청하면, 컨테이너는 상품 정보 EJB 엔터티 빈의 getOrder() 메소드를 호출하고, 본 발명에서 제시한 방법에 의해 getOrder() 메소드가 실행되어 현재 상품 엔터티와 관계 있는 RDBMS 상의 조인 엔터티를 반환하게 된다.
도 3은 도 2에 도시된 get 메소드 처리(단계 204)의 과정을 자세히 나타내고 있다. 먼저 컨테이너(113)는 소스의 영속 상태 객체(105)로부터 관계 값을 저장할 파트너와의 관계 정보 필드를 추출하고(단계 301), 쿼리 관리자(112)를 통하여 RDBMS 상의 조인 값을 SQL 쿼리를 통해 가져온다(단계 302). 이때, 쿼리 관리자(112)는 조인 값의 결과를 EJB 로컬 객체의 형태로 컨테이너(113)에 반환하며, 컨테이너(113)는 쿼리 관리자(112)로부터 반환된 값이 1 개일 경우와 여러 개일 경우를 나누어 처리를 분기한다. 만약, 반환된 값이 1 개일 경우에는, 컨테이너(120)는 파트너의 EJB 로컬 객체를 생성하고(단계 303), 상기에서 추출한 관계 정보에 쿼리 관리자(112)로부터 반환된 파트너의 EJB 로컬 객체를 설정한 다음(단계 304), EJB 로컬 객체를 클라이언트 사용자(106)에게 반환한다(단계 305).
또한, 만약 반환된 값이 여러 개일 경우, 컨테이너(120)는 먼저 컬렉션 객체를 생성하고(단계 306), 이 객체에 쿼리 관리자(112)로부터 반환된 모든 EJB 로컬 객체를 추가한 다음(단계 307 내지 309), 최종적으로 상기에서 추출한 영속 상태 객체의 관계 필드에 컬렉션 객체를 설정한 다음(단계 310), 클라이언트 사용자(106)에게 컬렉션 객체를 반환한다(단계 311).
도 4a는 소스와 파트너의 관계가 1:1인 경우의 예를 나타내고 있으며, 도 4b는 도 4a의 경우의 set 메소드의 처리 과정을 나타내고 있다.
도 4a에 도시된 소스와 파트너의 관계는, A 엔터티 빈 객체의 인스턴스인 a1과 a2, 그리고 B 엔터티 빈 객체의 인스턴스인 b1과 b2가 있을 때, 개발자에 의해 작성된 관계 필드 메소드가 a1.setB(a1.getB())인 경우를 나타내고 있다.
도 4b를 참조하여 메소드인 a1.setB(a1.getB())의 처리과정을 설명하면 다음과 같다. 먼저 컨테이너(113)는 소스 객체(a2)의 컨테이너로부터 EJB 로컬 객체를 추출하고(단계 401), 파트너의 영속 상태 객체 및 관계 정보를 컨테이너로부터 추출한 다음(단계 402), 소스 객체인 A 빈의 영속 상태 객체의 관계 필드 값의 설정 과정을 수행한다.
A 빈의 영속 상태 객체의 관계 필드 값의 설정 과정은 다음과 같이 수행된다. a1의 영속 상태 객체의 관계 필드(이전 값은 b1의 EJB 로컬 객체)를 NULL로 설정하고(단계 403), a2의 영속 상태 객체의 관계 필드(이전 값은 b2의 EJB 로컬 객체)를 b1의 EJB 로컬 객체로 설정한다(단계 404). 영속 상태 객체에 설정된 값들은 클라이언트 호출이 하나의 분산 트랜잭션 또는 메소드 호출에 대해 여러번 참조될 수 있고, RDBMS 테이블의 객체를 분산 객체로 표현하여 빈 개발자에게 편리성을 주기 위한 것을 목적으로 한다.
상기 A 빈의 영속 상태 객체의 정보를 설정한 다음, 파트너 객체인 B 빈의 영속 상태 객체의 값 설정과정을 수행한다. 먼저, b2의 영속 상태 객체의 관계 필드 값을 NULL로 설정하고(단계 405), b1의 영속 상태 객체의 필드 값을 a1의 EJB 로컬 객체로 설정한다(단계 406).
영속 상태 객체의 설정 과정이 완료되면, RDBMS 테이블의 값을 변경하기 위하여 쿼리 관리자(112)가 참조할 영속 상태 객체 상의 외래키(Foreign Key) 값을설정하는 과정을 수행한다. 이때, 1:1의 RDBMS 관계에서는 외래키 값이 소스와 파트너 중 어떤 쪽에도 존재할 수 있으므로, 양쪽의 영속 상태 객체에서 설정된 외래키 필드를 검색하여 값이 설정된 쪽의 외래키 값을 파트너 또는 소스의 주키 값으로 설정한다(단계 407 내지 410). 상기의 처리과정이 완료되면 컨테이너(120)는 A 객체의 인스턴스인 a1, a2, b1, b2 객체의 영속 상태 객체의 필드 속성 값을 쿼리 관리자(112)를 통하여 SQL92 형태의 쿼리로 생성하여, RDBMS 테이블 상에 반영한다(단계 411).
도 5a는 소스와 파트너의 관계가 1:M인 경우의 예를 나타내고 있으며, 도 5b는 도 5a의 경우의 set 메소드의 처리 과정을 나타내고 있다.
도 5a에 도시된 소스와 파트너의 관계는, A 엔터티 빈 객체의 인스턴스인 a1과 a2, 그리고 B 엔터티 빈 객체의 인스턴스인 b11, b12, b13, b21, b22, b23이 있을 때, 개발자에 의해 작성된 관계 필드 메소드가 a2.setB(a1.getB())인 경우를 나타내고 있다.
도 5b를 참조하여 메소드인 a2.setB(a1.getB())의 처리과정을 설명하면 다음과 같다. 먼저, 이 메소드의 실행 의미를 클라이언트 사용자(106)의 관점에서 설명하면, 상기의 예에 명시한 바와 같이 특정 상품을 나타내는 상품 엔터티 빈으로부터 그 상품이 포함된 모든 주문 번호를 조인하는 과정에 해당된다.
도 5a 및 5b에 도시된 1:1 과정과 마찬가지로, 컨테이너(113)는 먼저 소스 빈의 EJB 로컬 객체를 컨테이너로부터 추출하고(단계 501), 파트너의 영속 상태 객체 및 관계 정보를 컨테이너로부터 추출한다(단계 502). 엔터티 A의 영속 상태 객체에 설정하는 과정은, 먼저 a1의 영속 상태 객체의 관계 필드를 NULL로 설정하고(단계 503), a2의 영속 상태 객체의 관계 필드 값을 b1N(여기서 N은 1, 2, 3,...)의 컬렉션 객체로 설정한다(단계 504). 다음으로 엔터티 빈 B의 영속 상태 객체의 정보를 설정한다. 우선 b1N의 각 엔터티들의 영속 상태 객체의 관계 필드 값을 a2의 EJB 로컬 객체로 설정하고(단계 505), b2N의 각 엔터티들의 영속 상태 객체의 관계 필드 값을 NULL로 설정한다(단계 506).
영속 상태 객체의 값 설정이 완료되면, 쿼리 관리자(112)에 의해 SQL92 쿼리로 생성될 때 사용될 외래키 값을 설정하는데, 먼저 b2N의 각 엔터티들의 영속 상태 객체의 외래키 값을 a1의 주키 값으로 설정된 NULL로 설정하고(단계 507), b1N의 각 엔터티들의 영속 상태 객체의 외래키 값을 a1의 주키 값에서 a2의 주키 값으로 설정한다(단계 508). b2N의 각 엔터티는 상기의 과정에서 엔터티 A와의 관계가 상실되었고, NULL로 설정된 값은 쿼리 관리자(112)에 의해 조인 삭제(Join Delete) SQL 쿼리로 RDBMS 상에서 엔터티가 삭제된다. 또한, 도 4에 도시된 과정과 달리, 엔터티 B의 영속 상태 객체에서만 외래키 값을 설정하는 이유는 1:M의 관계의 경우 외래키 값은 반드시 M 쪽에 존재하기 때문이다. 상기의 과정이 완료된 후, 쿼리 관리자(112)는 영속 상태 객체에 설정된 외래키 값과 관계 필드의 값으로 참조하여 SQL 쿼리를 생성하여 RDBMS의 값을 변경한다(단계 509).
도 6a는 소스와 파트너의 관계가 M:1인 경우의 예를 나타내고 있으며, 도 6b는 도 6a의 경우의 set 메소드의 처리 과정을 나타내고 있다.
도 6a에 도시된 소스와 파트너의 관계는, A 엔터티 빈 객체의 인스턴스인 a1과 a2, 그리고 B 엔터티 빈 객체의 인스턴스인 b11, b12, b13, b21, b22, b23이 있을 때, 개발자에 의해 작성된 관계 필드 메소드가 a13.setB(a21.getB())인 경우를 나타내고 있다.
도 6b를 참조하여 메소드인 a2.setB(a1.getB())의 처리과정을 설명하면 다음과 같다. 도 4 및 5에서 도시된 바와 같이, 먼저 컨테이너로부터 소스의 EJB 엔터티 빈의 EJB 로컬 객체를 추출하고(단계 601), 파트너의 영속 상태 객체와 관계 정보를 추출한다(단계 602). 상기의 과정과 마찬가지로 엔터티 A의 영속 상태 객체의 관계 필드 값을 변경하기 위해 a1의 영속 상태 객체의 관계 필드 값(컬렉션 객체)에서 b13 엔터티를 제거하고(단계 603), a2의 영속 상태 객체의 관계 필드 값(컬렉션 객체)에 b13을 추가한다(단계 604). 엔터티 B의 영속 상태 객체의 관계 필드 값을 설정하기 위해, b13의 영속 상태 객체의 관계 필드 값을 a1의 EJB 로컬 객체에서 a2의 EJB 로컬 객체로 변경한다(단계 605).
상기한 영속 상태 객체의 값의 설정이 완료된 후, 엔터티 b13의 외래키 값을 a1의 주키 값에서 a2의 주키 값으로 변경 설정한다(단계 606). 상기의 과정이 완료되면, 쿼리 관리자(112)에 의해 상기의 관계 필드 값과 외래키 값을 참조하여 SQL 쿼리를 생성하여 RDBMS의 값을 변경한다(단계 607).
이상 설명한 바와 같이, 본 발명의 방법은 EJB 2.0 규격을 구현한 다양한 종류의 EJB 2.0 서버에 CMR 관리 모듈로써 적용될 수 있으며, 개발자들은 EJB 2.0 규격의 CMP와 CMR 개념을 비즈니스 로직 작성에 적용하면 기존의 데이터베이스 조인작업과 같은 복잡한 업무 로직을 단순화할 수 있어서, 응용 시스템의 생산성과 개발의 효율성 증대, 유지 및 보수의 편리성의 증대의 효과를 얻을 수 있다.

Claims (7)

  1. EJB 클라이언트가 EJB 서버측의 소스 빈의 CMR(Container Managed Relationship) 메소드를 호출하면, 상기 소스 빈과 파트너 빈의 상호관계(1:1, 1:M 또는 M:1)를 파악하는 상호관계 파악 단계와,
    상기 호출된 메소드의 종류 및 상기 파악된 관계에 따라서, 상기 호출된 메소드를 처리하는 메소드 처리 단계와,
    상기 메소드 처리 단계의 처리 결과를 RDBMS의 데이터베이스에 적용하는 단계를 포함하는 것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
  2. 제 1 항에 있어서,
    상기 메소드 처리 단계는, 상기 호출된 메소드의 종류가 get 메소드인 경우에,
    상기 소스 빈의 영속 상태 객체로부터 파트너 빈과의 관계를 나타내는 관계필드를 추출하는 단계와,
    상기 RDBMS 상의 상기 파트너 빈의 조인 객체를 SQL 쿼리를 통해 추출하는 단계와,
    상기 조인 객체의 개수에 따라, 상기 조인 객체에 해당하는 EJB 객체를 생성하여 상기 EJB 클라이언트에게 반환하는 EJB 객체 생성 및 반환 단계를 포함하는것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
  3. 제 2 항에 있어서,
    상기 EJB 객체 생성 및 반환 단계는,
    상기 조인 객체의 개수가 하나인 경우에는, 상기 조인 객체에 해당하는 상기 파트너 빈의 EJB 로컬 객체를 생성하고, 상기 관계 필드에 상기 EJB 로컬 객체를 설정하며, 상기 EJB 로컬 객체를 상기 EJB 클라이언트에게 반환하며,
    상기 조인 객체의 개수가 둘 이상인 경우에는, 상기 조인 객체에 해당하는 둘 이상의 파트너 빈의 EJB 로컬 객체를 생성하고, 상기 파트너 빈의 컬렉션 객체를 생성하며, 상기 컬렉션 객체에 상기 EJB 로컬 객체를 추가하고, 상기 관계 필드에 상기 컬렉션 객체를 설정하며, 상기 컬렉션 객체를 상기 EJB 클라이언트에 반환하는 단계를 포함하는 것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
  4. 제 1 항에 있어서,
    상기 메소드 처리 단계는, 상기 호출된 메소드가 set 메소드인 경우에,
    상기 소스 빈의 EJB 로컬 객체를 추출하는 단계와,
    상기 파트너의 영속 상태 객체 및 관계 정보를 추출하는 단계와,
    상기 상호관계에 따라 상기 소스 빈 및 상기 파트너 빈의 상태 정보를 설정하는 상태 정보 설정 단계를 포함하는 것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
  5. 제 4 항에 있어서,
    상기 상태 정보 설정 단계는,
    상기 상호관계가 1:1인 경우에,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 관계 필드 값을 NULL로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 관계 필드 값을 각각 상기 파트너 빈 및 상기 소스 빈의 EJB 로컬 객체로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 외래키 값을 NULL로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 외래키 값을 각각 상기 파트너 빈 및 상기 소스 빈의 주키 값으로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 필드 값을 RDBMS 테이블 상에 반영하는 단계를 포함하는 것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
  6. 제 4 항에 있어서,
    상기 상태 정보 설정 단계는,
    상기 상호관계가 1:M인 경우에,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 관계 필드 값을 NULL로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 관계 필드 값을 각각 상기 파트너 빈의 컬렉션 객체 및 상기 소스 빈의 EJB 로컬 객체로 설정하는 단계와,
    상기 파트너 빈의 영속 상태 객체의 외래키 값을 NULL로 설정하는 단계와,
    상기 파트너 빈의 영속 상태 객체의 외래키 값을 상기 소스 빈의 주키 값으로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 필드 값을 RDBMS 테이블 상에 반영하는 단계를 포함하는 것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
  7. 제 4 항에 있어서,
    상기 상태 정보 설정 단계는,
    상기 상호관계가 M:1인 경우에,
    상기 소스 빈의 영속 상태 객체의 관계 필드 값에서 상기 파트너 빈을 제거 또는 추가하는 단계와,
    상기 파트너 빈의 영속 상태 객체의 관계 필드 값을 상기 소스 빈의 EJB 로컬 객체로 설정하는 단계와,
    상기 파트너 빈의 영속 상태 객체의 외래키 값을 상기 소스 빈의 주키 값으로 설정하는 단계와,
    상기 소스 빈 및 상기 파트너 빈의 영속 상태 객체의 필드 값을 RDBMS 테이블 상에 반영하는 단계를 포함하는 것을 특징으로 하는 EJB 영속 상태 객체로 표현된 데이터베이스 엔터티들의 자동화된 상호 관계 관리 방법.
KR10-2001-0086320A 2001-12-27 2001-12-27 Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법 KR100490750B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0086320A KR100490750B1 (ko) 2001-12-27 2001-12-27 Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0086320A KR100490750B1 (ko) 2001-12-27 2001-12-27 Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법

Publications (2)

Publication Number Publication Date
KR20030056153A true KR20030056153A (ko) 2003-07-04
KR100490750B1 KR100490750B1 (ko) 2005-05-24

Family

ID=32214373

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0086320A KR100490750B1 (ko) 2001-12-27 2001-12-27 Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법

Country Status (1)

Country Link
KR (1) KR100490750B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100473057B1 (ko) * 2002-02-08 2005-03-08 삼성에스디에스 주식회사 직관적 방법에 의한 데이터베이스 연동 보고서 작성 방법
KR100687771B1 (ko) * 2005-05-26 2007-03-02 (주)엠투소프트 이제이비를 동적으로 이용한 리포트 작성 시스템 및 그방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298478B1 (en) * 1998-12-31 2001-10-02 International Business Machines Corporation Technique for managing enterprise JavaBeans (™) which are the target of multiple concurrent and/or nested transactions
US6269373B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for persisting beans as container-managed fields
JP4146983B2 (ja) * 1999-02-26 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ・オブジェクトのメソッドを呼び出すプロセス方法及びデータ処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100473057B1 (ko) * 2002-02-08 2005-03-08 삼성에스디에스 주식회사 직관적 방법에 의한 데이터베이스 연동 보고서 작성 방법
KR100687771B1 (ko) * 2005-05-26 2007-03-02 (주)엠투소프트 이제이비를 동적으로 이용한 리포트 작성 시스템 및 그방법

Also Published As

Publication number Publication date
KR100490750B1 (ko) 2005-05-24

Similar Documents

Publication Publication Date Title
US8234308B2 (en) Deliver application services through business object views
US6418448B1 (en) Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web
US6941298B2 (en) System and method for providing result sets using EJB query language
US20100115100A1 (en) Federated configuration data management
US7487191B2 (en) Method and system for model-based replication of data
US7774463B2 (en) Unified meta-model for a service oriented architecture
US10210185B2 (en) GINA service orchestration
US9201700B2 (en) Provisioning computer resources on a network
MXPA00007085A (es) Sistema de integracion de aplicacion de empresa distribuido extensible.
US7099727B2 (en) Knowledge repository system for computing devices
WO2006026702A2 (en) Methods and systems for semantic identification in data systems
Wells et al. Linda implementations in Java for concurrent systems
CA3106571A1 (en) Data warehousing system and process
US8839189B2 (en) Service variants for enterprise services
KR100490750B1 (ko) Ejb 영속 상태 객체로 표현된 데이터베이스 엔터티들의자동화된 상호관계 관리 방법
Borkar et al. XML data services
Kozankiewicz et al. Integration of heterogeneous resources through updatable views
Blackham et al. Supporting Pervasive Business via Virtual Database Aggregation
Chromiak Heterogeneous Indexing Register for Object Database
Afsarmanesh et al. 3 DESIGN OF THE FEDERATED INFORMATION MANAGEMENT ARCHITECTURE FOR PRODNET
Wang et al. The Research and Implementation of Data Warehouse and Data Mining in Decision Support System
Och et al. The COIL data mediator definition language
Jian et al. Using persistent objects to encapsulate multi-dimension data entities in a warehousing environment

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130424

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee