[Database] ORM이란?

박정현·2023년 9월 27일
0
post-thumbnail

1. ORM

  • Ogject-Relationcal Mappping
  • 즉, 객체와 관계형 데이터베이스 매핑을 의미함
  • OOP(Object Oriented Programing)에서 쓰는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블을 매핑(연결)하는 것을 의미
  • 즉, Java객체와 RDB(관계형 데이터 베이스)의 매핑을 의미함
  • ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메소드)로서 데이터를 조작할 수 있음
    • 예를 들어 지금까지 Member테이블의 데이터를 출력하기 위해 MySQL에서 “SELECT * FROM member_tb;라는 쿼리를 실행했어야 했다.
    • 그러나 ORM을 사용하면 member_tb 테이블과 매핑된 객체를 member라고 했을 때, member.findAll();라는 메소드 호출로 데이터 조회가 가능

2. ORM 장단점

(1) 장점

  • 코드량을 줄일 수 있다.
  • 실제 사용 코드와 DB테이블 코드를 분리 시킬 수 있다.
  • DBMS의 종속성을 줄일 수 있다. (핵심)
    • 종속성이란? 프로그램 구조가 데이터 구조에 영향을 받는지
  • 즉, SQL문을 DBMS에서 작성하지 않아도 된다.

(2) 단점

  • 완전한 ORM은 아직까지 완성되지 않았다.
    • 사용하기는 편하지만 설계는 매우 신중하게 해야한다.
    • 프로젝트의 복잡성이 커질경우 난이도 또한 올라갈 수 있다.
    • 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수 있다.
    • 일부 자주 사용되는 대형 쿼리는 속도를 위해 SP를 쓰는 등 별도의 튜닝이 필요한 경우가 있다.

3. ORM 프레임워크

(1) JPA/Hibernate ⭐

  • JPA(Java Persistence API)는 자바의 ORM 기술 표준으로 인터페이스의 모음
  • ORM을 사용하기 위해서 인터페이스를 모아둔 것
  • JPA framework

(2) Seqeulize

  • Sequelize는 Postgres, MySQL, MariaDB, SQLite 등을 지원하는 Promise 에 기반한 비동기로 동작하는 Node.js ORM이다.

(3) Django ORM

  • python기반 프레임워크인 Django에서 자체적으로 지원하는 ORM이다.
profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글