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
- ORM 의 경우
* 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 |