본문 바로가기
ComputerScience/Database

[DataBase] 7. ORM

by Develaniper 2021. 6. 4.

1. ORM(Object Relational Mapping)

객체와 관계형 DB를 자동으로 매핑해주는 것으로 객체와 관계(RDB)를 매핑해 주는 것을 말한다.

 객체지향은 클래스를 관계형 DB는 테이블을 사용한다. 객체와 관계형 DB의 불일치가 존재하는데 이 때 ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

즉, ORM을 사용하면 SQL문을 작성할 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게된다.

 

 

1) 장점

  • 객체지향적인 코드
     ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용하여 프로그래밍 하는 데 집중 할 수 있다.
     SQL문을 사용하며 같이 필요한 선언문, 할당, 종료 등 부수적 코드가 사라지거나 줄어들어 가독성을 높일 수 있다.
  • 재사용, 유지보스 리팩토링 용이
     객체로 작성되어있기 때문에 재활용 할 수 있고, 매핑하는 정보가 명확하기 때문에 ERD를 보는 의존도를 낮출 수 있다.
  • DBMS 종속성 하락
     객체 간의 관계를 바탕으로 SQL을 자동을 생성하고, 객체의 자료형 타입까지 사용할 수 있어 RDBMS의 데이터 구조와 모델(객체) 사이의 간격을 좁힐 수 있다.

2) 단점

  • ORM을 사용하는 데는 한계가 있다.
     프로젝트 복잡성이 커질 수록 난이도가 올라가고 잘못된 구현은 속도저하 및 일관성을 무너뜨리는 문제를 발생시킬 수 있다. 또한, 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하여 결국 SQL문이 필요할 수 있다.

 

3) 대표적인 ORM

  • JPA/Hibernate ( JAVA ORM 기술 표준 인터페이스 )
  • Sequelize(Node.js의 비동기 ORM)
  • Django ORM

 

 

참고

https://geonlee.tistory.com/207

 

'ComputerScience > Database' 카테고리의 다른 글

[Database] 일반상식  (0) 2021.06.23
[Database] InnoDB  (0) 2021.06.22
[DataBase] 6. 조인(JOIN)  (0) 2021.06.03
[DataBase] 5. 파티셔닝/ 샤딩  (0) 2021.06.03
[DataBase] 4. 정규화  (0) 2021.06.03

댓글