티스토리 뷰

Java+Spring/Spring

[Spring]SQL Mapper vs. ORM

Vagabund.Gni 2022. 8. 26. 20:05
728x90
반응형

 

 

 

지난 글에선 웹 앱의 계층 구조와 JDBC Workflow에 대해 알아봤다.

 

출처:https://herbertograca.com/2017/08/03/layered-architecture/

 

Layered Architecture

In a layered architecture, the layers can be used in a strict way, where a layer only knows the layer directly beneath it, or in a more flexible approach where a layer can access any layer beneath …

herbertograca.com

 

2022.08.26 - [개발/Spring] - [Spring]JDBC(Java DataBase Connectivity)

 

[Spring]JDBC(Java DataBase Connectivity)

지난 글까지 웹 앱의 서비스 계층까지 구현을 마쳤다. 이번 글부터는 더 깊이 들어가 데이터 액세스 계층에 대해 다룰 텐데, 다시 짧게 복습하고 가자. Presentation Layer - API Layer라고 불리며 클라

gnidinger.tistory.com

하지만 이 JDBC에는 단점이 있었는데, 데이터베이스 연결과 SQL CRUD 사용, 결과값의 Data Type 매핑

 

모든 과정을 개발자가 직접, 반복해서 입력해주어야 한다는 점이었다.

 

따라서 개발의 생산성을 심각하게 떨어뜨리게 되었는데, 이를 해결하며 나온 것이 바로 SQL Mapper와 ORM이다.

 

SQL Mapper vs. ORM(Object Relational Mapping)

 

SQL Mapper와 ORM은 둘 다 영속성 프레임워크에 속한 기술이다.

 

번거로운 JDBC 작업을 대신 해준다는 공통점과 함께 여러 가지 차이점이 있는데,

 

지금부터 하나씩 알아보자.

 

참고로, SQL Mapper와 ORM을 구조면이 아닌 시간 순서로 본다면 아래와 같은 그림이 된다.

 

SQL Mapper

  • Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술
  • SQL문 직접 작성 및 쿼리 수행결과를 어떠한 객체에 매핑하여 줄지 바인딩 → SQL 의존적
  • 다른 DB를 도입하거나 변환하는 경우 SQL문을 그 DB에 맞게 새로 작성 DB 의존적
  • 패러다임 불일치* 발생
  • Mybatis, JDBC Template 등이 있음

*패러다임 불일치

 

객체 지향 언어 (OOL) - 데이터를 클래스로 캡슐화해 객체로써 사용. 추상화, 상속, 다형성 등의 장치 존재

 

관계형 데이터베이스 (RDB, Relational Database) - 데이터 항목 간에 사전 정의를 통해 속성별로 데이터를 나누어 저장

 

DB에는 추상화, 상속 등의 장치가 존재하지 않고, 오히려 데이터를 쪼개서 저장해야 한다.

 

그러다 보니 자연스럽게 객체가 아닌 테이블에 더 집중하게 되고,

 

객체는 단순히 테이블에 매핑시키기 좋게, 데이터를 전달하기에 적합하게 설계하게 된다.

 

이는 개발 과정에서 SQL 설계에 시간을 많이 잡아먹는, SQL 의존적인 형태가 될 수밖에 없다.

 

ORM(Object Relational Mapping)

  • Object와 DB Table을 매핑하여 데이터를 객체화하는 기술
  • 객체 사이의 관계를 바탕으로 SQL 자동 생성 → SQL 쿼리가 아닌 메서드로 데이터 조작
  • 객체 지향 프로그래밍 언어와 DB 간 데이터를 변환 - "가상" 객체 데이터베이스 구축
  • 객체와 DB 설계의 분리
  • 복잡한 쿼리의 처리가 힘들고, OOP와 RDB 양쪽을 알아야 해서 배우기가 어려움
  • Hibernate, Spring Data JPA 등이 있음
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함