본문 바로가기
DB/MySQL

ORM과 ODM

by 노믹 2022. 12. 20.

ODM (Object Data Mapping)

NoSQL에서 Document Database를 지원하기 위해 데이터를 변환하는 프로그래밍 기법

MongoDB

특징

  1. Join이 없으므로 Join이 필요 없도록 데이터 구조화가 필요
  2. 다양한 종류의 쿼리문 지원(필터링, 수집, 정렬, 정규표현식 등)
  3. 관리의 편의성
  4. 스키마 없는(Schemaless) 데이터베이스를 이용한 신속 개발. 필드를 추가하거나 제거하는 것이 매우 쉬움
  5. 쉬운 수평 확장성
  6. 인덱싱 제공

종류

  • mongoose: node.js 기반으로 MongoDB와 프로그램 사이 데이터를 변환해주는 ODM

ORM (Object Data Mapping)

데이터베이스와 객체 지향 프로그램이 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법

ORM이란 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미한다.

객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용하는데 객체 모델과 관계형 모델간에 불일치가 존재한다. 이 객체간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결하는 것이 ORM이다.

장점

  1. 객체 지향적 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와줌
  2. 재사용 및 유지보수의 편리성
  3. DBMS에 대한 종속성이 낮음

단점

  1. 복잡성이 올라갈 수록 난이도가 높아짐
  2. 프로시저가 많은 시스템을 전환하기가 어려움

종류

  • Sequelize : Node.js에서 가장많이 사용되고 있는 ORM이며 MySQL, PostgreSQL, MariaDB, SQlite, MSSQL을 지원
  • Prisma : GraphQL 스키마를 기반으로 DB를 자동생성 해줌
  • myBatis : 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper
  • jdbc : DB에 접근할 수 있도록 Java에서 제공하는 API
  • jpa : JPA는 ORM을 사용하기 위한 표준 인터페이스를 모아둔 것, JPA의 대표적인 구현체로는 Hibernate, EclipseLink, DataNucleus, OpenJPA, TopLink Essentials 등
  • Hibernate : HQL(Hibernate Query Language)이라 불리는 매우 강력한 쿼리 언어를 포함

'DB > MySQL' 카테고리의 다른 글

SQL (Structured Query Language)  (0) 2022.12.20