posted by 구름너머 2007. 9. 12. 14:00

링크1:ORM의 기본적인 개념 및 활용방안

링크2:

출처:http://cafe.naver.com/itleader.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=229

위자료를 바탕으로넘버링과 문자강조를 추가했음.

I.OR Mapping의 개요

. OR Mapping의 정의

-객체지향프로그래밍에서 설계한 클래스와 RDBMS의 Table 간의 Mapping간의 매핑 작업과정

.객체와 테이블 사이의 매핑 필요성

- 객체지향프로그래밍작업에서 OO개념에 맞지않은 RDBMS를 사용하는 경향이 많음

- OODB가 RDB만큼 안정성과 성능을 보장하지 못함



II. 클래스의 Relation 종류

관계

설명

Association

클래스 간의 가장 일반적인 관계로 독자적으로 존재하는 클래스 간의 구조적인 관계

Aggregation

Association의 특별한 형태의 관계로 전체(Whole)와 부분(Part)을 표현

한 클래스가 다른 클래스에 종속적인 포함관계를 나타냄

Composition

Aggregation 관계 중에서 전체와 부분의 생명주기(즉, 생성과 소멸)이 동일한 경우

구현 시 부분(Part)에 해당되는 객체에 대한 생성과 소멸에 대한 특별한 관리가 요구됨

Generalization

클래스간의 상속관계를 표현

공통된 속성이나 오퍼레이션 등을 부모 클래스가 갖고, 각 서브 클래스는 자신만의 고유한 속성과 오퍼레이션을 갖음

III. OR Mapping 절차



.Class를 Table로 변환

- 클래스는 테이블로 매핑

- 클래스의 인스턴스인 객체는 테이블의 로우 하나로 매핑

. Attribute를 Column으로 변환

1).클래스의 속성하나는 0또는 N개의 테이블 칼럼으로 대응

2).영속속성이 아닌 것은 제외

:예) 계산목적으로 사용하는 칼럼, 급여테이블의 실수령액

3) 속성 대 칼럼은 1:1, 1:N, N:1로 매핑가능

-일반적으로 한속성은 한 칼럼으로 대응

-한 속성이 여러 컬럼으로 대응

-여러 속성이 한칼럼으로 대응

:예) 주소속성(우편번호부와 상세번호부로 나뉘어서 2개칼럼으로 대응 가능)

IV. 상속관계(Generalization) 대응시키기

. 상속관계 대응전략

-상속받은 속성을 영속모델에서 어느 테이블에 위치시킬것인가

-Single table, Concrete Table, Class Table방식이 있음

-전체 상속관계에 대해 일률적으로 적용하지 말고 업무 프로세스에 맞게 적합한 방식 선정



. Single table 매핑

1) 매핑방법

-상위 클래스가 Sub 클래스의 모든 속성을 갖는 방법

-서브클래스 속성이 적을 경우에 적합함

-Object ID를 primary key로 설정

2) 장점

- 단순하고 매핑하기 쉬움

- ObjectType이 바뀌더라도 다형성을 지원

- 한 테이블에 자료가 모두 있어서 조인이 필요없고 조회성능 우수

3) 단점

-서브 class에 속성이 추가될때마다 테이블을 변경해야함

-같은 계층에서 결합도 증가(여러 클래스와 하나의 테이블간의 결합도 증가)

-중복자료관리로 공간낭비 발생

- ObjectType 필드추가(서브class구분위해 필요)

- 단일 타입은 수용하나 복수 타입이 되면 표현하기 힘듬(경력사원인데 신입사원으로 채용할경우)



OID(Object ID):객체의 유일성을 보장,테이블에서 Primary key가 된다,테이블에서는 의미없는 속성으로 일반적으로 숫자(Integer)로 표현함

.Concrete Table

1) 매핑방법

-하위클래스가 상위추상클래스의 모든 속성을 갖는 방법

-하위 클래스를 모두 테이블로 매핑

-상위클래스 속성은 하위 테이블에 중복으로 유지

-엔티티별 OID유지

-상위클래스의 속성이 적을 때 적합

2) 장점

-한 테이블에 모든 칼럼이 모두 존재

3) 단점

-상위 클래스 수정이 하위 클래스 테이블까지 모두 변경

: 예) Applicant클래스에 신장이 추가되면 하위 테이블도 모두 추가 필요

-object type이 변경되면 이전타입을 복사하고 새로운 OID할당

:예)신입사원이 경력사원으로 바뀌면 후속작업 과다발생

- 복수 타입을 표현하기 힘들고 데이터 무결성 유지 어려움(이상현상 발생 가능)

- 모든 클래스를 함께 조회할 때 조인이 빈번히 발생



. Class Table

1) 매핑방법

- 상위 클래스와 각 Sub 클래스를 별도의 테이블로 매핑

-클래스의 속성이 그대로 테이블의 속성이 되고 OID가 추가됨

-가장 무난하나 많은 테이블이 생성되어 복잡해지는 단점

2) 장점

-객체기술 개념을 그대로 반영

-다형성을 가장 잘 지원

-상위클래스의 수정이 매우 용이

-새로운 서브클래스의 추가 용이

3) 단점

-테이블의 수가 증가

-조인문이 복잡해져서 조회성능 저하



. 상속관계 매핑 전략 비교

항목

Single

Concrete

Class

조인

단순

보통

어려움

구현

단순

보통

어려움

자료접근

단순

단순

보통

결합도

매우높음

높음

낮음

접근속도

빠름

빠름

보통

다형성

보통

나쁨

좋음

V. 연관관계(Association) 매핑

-연관관계는 테이블사이에서 외래키를 설정해서 구현

. 1:1연관 대응

- 접근의 빈도수가 많은 쪽으로 상대방의 Primary Key가 Foreign Key로 등록

-한테이블로 통합될수 있음



. 1:n연관 매핑

- M 쪽으로 1쪽의 Primary Key를 Foreign Key로 매핑

- 방향성은 Foreign Key가 생성되는 쪽과 상관없이 두 클래스간의 보는 관점의 방향성을 의미



-운향의 방향을 고려하면 TaskOID가 Employee테이블에 외래키로 나와야함

-TaskOID가 여러 개이고 rdbms에서는 하나의 칼럼에 복수값을 허용하지 않음

-따라서 many쪽에 외래키를 둠

. m:n연관관계

-중간에 새로운 연관테이블을 추가함

- 생성된 테이블은 양쪽 테이블의 Primary Key를 갖도록 설계



- Benefit(국민연금)와 Employee는 m:n관계

- 양쪽 테이블의 primay 키를 조합하여 추가테이블 생성



. Aggregation

- 구현상 참조하는 테이블에서 단순 Foreign Key로 참조되는 정도의 의미를 가짐

마. Composition

- 전체와 부분의 생명주기가 동일하므로, Constraint로서 Delete Cascading을 설계하기도 함

VI. OR Mapping 기술전망

-RDB와 객체를 자동으로 연결시켜주는 툴이 개발되어 보다쉽계 변경이 가능함

-Or mapping만으로는 불충분하며 데이터모델에 대한 정규화까지 감안하여 OR매핑을 수행해야함

'ORACLE' 카테고리의 다른 글

erwin 도메인 관리 관련 아티클  (0) 2008.05.20
trace파일 만들기  (0) 2008.04.18
시간차이 구하기...  (0) 2007.07.04
MS-SQL 접속 삽질의 날!!!  (0) 2007.06.29
CORE DUMP 해결방법  (0) 2007.03.06