본문 바로가기

공부

ORM 이란?

728x90

ORM 이란?

Object Relational Mapping, 객체-관계 매핑

 

객체와 관계형 데이터베이스의 데이터를 자동을 매핑 (연결) 해주는 것을 말한다.

  • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다 

  • 객체 모델과 관계형 모델간의 불일치가 존재하므로  ORM을 통해 둘간의 관계의 불일치를 해결한다. 

쉽게 말하면 SQL 의 쿼리를 직접 작성하지 않고 코드 형식으로 나타낼 수 있다는 것이다

 

< Nodejs 에서 Sequelize ORM을 쓴 예시 >

const user = await models.Users.findOne({where: {id:1}});

 

위의 코드는 원래 SQL 문으로는

SELECT * FROM Users WHERE id =1

이처럼 ORM 을 사용하면 직접 SQL문을 작성하지 않고 직관적으로 코드를 작성하여 쿼리를 만들어 데이터를 검색할 수 있습니다.

 

SQL Mapper 와 ORM

  • 공통점 : SQL Mapper 와 ORM 모두 데이터를 영구하게 저장하여 영속성을 부여한다 ( Persistence Layer 계층의 역할을 담당한다 )
  • 차이점
    • ORM 의 경우 
      • 직관적인 코드(메서드)로 데이터를 조작할 수 있다. 
      • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해준다 
      • 데이터베이스 데이터 <- 매핑 -> Object 필드
      • 예시) JPA, Hibernate, Sequelize( Nodejs )
    • SQL Mapper의 경우 
      • SQL Mapper 는 SQL 문장으로 직접 데이터베이스 데이터를 다루게 된다. ( SQL 문장을 명시해 주어야함 )
      • SQL <- 매핑 -> Object필드
      • 예시 ) MYbatis, JDBCTemplates

 

* References *

gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html

gmlwjd9405.github.io/2019/02/01/orm.html

 

'공부' 카테고리의 다른 글

최단경로 알고리즘 찾는 알고리즘 비교  (0) 2021.03.19
백앤드 개발자 로드맵  (0) 2020.10.18
웹서버 - Reverse Proxy란  (0) 2020.09.11
Elastic stack 구성  (0) 2020.09.11
My SQL - pymysql cursor 개념  (1) 2020.09.08