본문으로 이동

객체 관계 매핑

위키백과, 우리 모두의 백과사전.

객체 관계 매핑(Object-relational mapping, ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법이다. 객체 관계 매핑을 가능하게 하는 상용 또는 무료 소프트웨어 패키지들이 있고, 경우에 따라서는 독자적으로 개발하기도 한다.

개요

[편집]

스토리지 드라이버의 구현별 세부 사항은 일반적으로 사용 중인 프로그래밍 언어의 API에 래핑되어 더 간단하고 주변 코드의 패러다임에 더 부합하는 방식으로 스토리지 매체와 상호 작용하는 방법을 노출한다.

다음은 데이터베이스 엔진을 사용하여 SQL로 작성된 쿼리를 실행하기 위해 C# 코드로 작성된 간단한 예이다.

var sql = "SELECT id, first_name, last_name, phone, birth_date, sex, age FROM persons WHERE id = 10";
var result = context.Persons.FromSqlRaw(sql).ToList();
var name = result[0]["first_name"];

이에 비해 다음에서는 언어의 기능을 자연스럽게 활용하는 코드 작성이 가능한 ORM-job API를 사용한다.

var person = repository.GetPerson(10);
var firstName = person.GetFirstName();

위의 사례에서는 저장소 저장소를 나타내는 개체와 해당 개체의 메서드를 사용한다. 다른 프레임워크는 아래 예제와 같이 코드를 정적 메서드로 제공할 수 있지만 다른 메서드는 객체 지향 시스템을 전혀 구현하지 않을 수도 있다. 종종 ORM이 주변 언어의 디자인 원칙에 가장 잘 맞도록 패러다임을 선택한다.

var person = Person.Get(10);

전통적인 데이터 액세스 기술과 비교

[편집]

객체 지향 언어와 관계형 데이터베이스 간의 전통적인 교환 기술과 비교할 때 ORM은 작성해야 하는 코드의 양을 줄이는 경우가 많다.[1]

ORM 도구의 단점은 일반적으로 구현 코드에서 실제로 일어나는 일을 모호하게 만드는 높은 수준의 추상화에서 비롯된다. 또한 ORM 소프트웨어에 대한 과도한 의존은 잘못 설계된 데이터베이스를 생성하는 주요 요인으로 언급되었다.[2]

같이 보기

[편집]

각주

[편집]

외부 링크

[편집]