패러다임 불일치?
객체 지향 프로그래밍과 RDBMS 사이의 기본적인 차이로 인해 생기는 문제를 말한다. 패러다임 불일치가 생기는 이유는 애초에 이들의 목표와 동작방식이 다르기 때문이다
- 상속 : 객체 지향 프로그래밍에서는 클래스 간의 상속이 일반적인 개념이지만, RDBMS에서는 이러한 개념이 없다.
- 연관성과 조인 : 객체 지향에서는 연관성을 표현하기 위해 참조를 사용하고, RDBMS에서는 외래 키와 조인을 사용한다.
- 객체 식별 : 객체는 메모리 내에서의 위치나 참조를 통해 식별되지만, RDBMS에서는 기본 키를 통해 식별한다
이렇듯 RDMBS와 객체 지향 프로그래밍이 너무도 다르기 때문에, 이전의 개발에서는 SQL을 작성하는 데 많은 시간을 쏟을 수밖에 없었다. 개발자가 SQL 작성 시간을 줄이고 객체지향적인 설계에 집중하기 위해 ORM이 등장했다
ORM(Object-Relational Mapping) 이란?
- 객체와 DB 테이블이 매핑을 이루는 것을 말한다
- SQL 쿼리가 아닌 메서드로 데이터를 조작한다(SQL을 자동으로 생성)
ORM vs SQL Mapper
-
SQL Mapper
- SQL ← mapping → Object 필드
- SQL 문으로 직접 DB를 조작한다(SQL 직접 작성)
- ex) Mybatis
-
ORM
- DB 데이터 ← mapping → Object 필드
- 객체와 DB의 데이터를 자동으로 매핑해준다
- 메서드로 데이터를 조작한다
- SQL을 자동으로 생성한다
- ex) JPA