ORM(Object Relational Mapping)
ORM(Object Relational Mapping, 객체 관계 매핑)
-
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 프로그래밍 기술
-
객체 지향 프로그래밍 언어(예: Java, C#, Python 등)에서 사용하여 관계형 데이터베이스 시스템(예: MySQL, PostgreSQL, Oracle, SQL Server 등)과의 상호 작용에 사용
-
ORM 사용 이유
객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용
-> 객체 모델과 관계형 모델 간에 불일치 발생
-> ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결
-
대표적인 ORM 프레임워크
- Java: Hibernate
- C#: Entity Framework
- Python: Django ORM
- Ruby: ActiveRecord
장점
- 객체 지향적인 코드로 인해 직관적이고 비즈니스 로직에 집중할 수 있음
- 재사용 및 유지보수 편리성 증가
- DB에 대한 종속성 감소
단점
- ORM으로만 서비스를 구현하기에 어려움이 있음
- 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 사용하기 어려움
주요 개념
- 객체와 테이블 매핑: ORM은 데이터베이스 테이블과 프로그래밍 언어의 객체 간에 매핑을 제공합니다. 각 테이블은 객체 클래스에 대응하고, 각 열은 클래스의 속성(필드)에 대응합니다. 이런 방식으로 객체와 데이터베이스 간의 변환 작업을 자동화합니다.
- SQL 추상화: ORM은 SQL 쿼리 작성을 추상화하고, 데이터베이스 관련 작업을 직접 다루지 않고도 객체를 통해 데이터를 검색, 삽입, 갱신 및 삭제할 수 있게 해줍니다. 이로 인해 개발자는 SQL 문법에 대한 지식이 부족해도 데이터베이스 작업을 수행할 수 있습니다.
- 객체 지향 프로그래밍과 편의성: ORM은 객체 지향 프로그래밍과 잘 통합되므로 개발자는 데이터베이스를 객체처럼 다룰 수 있습니다. 이로 인해 코드의 가독성이 향상되며 유지 보수가 쉬워집니다.
- 데이터베이스 독립성: ORM은 특정 데이터베이스 시스템에 종속되지 않고 여러 데이터베이스 관리 시스템을 지원할 수 있도록 설계됩니다. 따라서 데이터베이스를 변경하더라도 코드 변경이 최소화됩니다.
- 생산성 향상: ORM을 사용하면 반복적인 데이터베이스 작업 및 SQL 쿼리 작성을 피할 수 있으므로 개발 시간을 단축하고 생산성을 향상시킬 수 있습니다.
정리
- ORM은 객체 지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터 간의 불일치를 해소하여 상호작용을 돕습니다. 이를 통해 코드의 직관성을 확보하고, 재사용 및 유지보수 편리성을 증가시키며 DB에 대한 종속성도 감소시킵니다. 하지만 ORM만으로 모든 서비스를 구현하기에 어려움이 있으며, 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 사용하기에 어려움이 있습니다.
참고
-
ChatGPT-4.0
보완/복습
- 2023.11.01 복습