링크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 |