백엔드/JPA

[JPA] SQL Mapper 와 ORM

2023. 5. 1. 17:48
목차
  1. 영속성(Persistence)
  2. SQL Mapper
  3. SQL Mapper의 장점
  4. SQL Mapper의 단점
  5. ORM(Object Relation Mapping)
  6. ORM의 장점
  7. ORM의 단점
728x90

영속성(Persistence)

영속성은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다.

 

결국 영속성은 특정 데이터 구조를 이전 상태로 복원할 수 있게 해 주어 프로그램의 종료와 재개를 자유롭게 해 준다.

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

이는 Layered Architecture에서 도메인 모델과 데이터베이스사이에 존재하며, 프로그램의 객체 정보를 DB에 저장하고, DB의 정보를 객체로 담아와 사용할 수 있도록 한다.

 

Java에서는 영속성을 위해 JDBC를 지원해 주는데, JDBC에서 DB에 접근하여 SQL을 수행하고, 결괏값을 다시 데이터타입으로 매핑시켜 주는 작업을 개발자가 일일이 수행해야 하는 번거로움이 있다.

 

SQL Mapper와 ORM은 개발자가 직접 JDBC를 이용해 프로그래밍하지 않도록 기능을 제공하는 Persistence Framework의 종류이다.


SQL Mapper

SQL Mapper는 Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술이다.

객체와 테이블의 관계를 매핑하는 것이 아니라, SQL을 직접 작성하고 결과를 어떠한 객체에 바인딩하는 방법으로 SQL에 의존적인 방법이다.

SQL Mapper의 장점

  • JDBC를 사용했을 때 발생하는 불필요한 코드를 줄일 수 있다.
  • SQL 쿼리를 그대로 사용하기에 복잡한 JOIN, 튜닝 등을 좀 더 수월하게 작성 가능하다.
  • 동적 쿼리 생성에 유용하다.

SQL Mapper의 단점

  • SQL 구문을 직접 작성해야 한다.
  • DBMS의 종속적이다.
  • 비슷한 쿼리를 반복적으로 작성해야 한다.
  • 객체와 관계형 테이블 구조간 패러다임 불일치가 발생한다.

ORM(Object Relation Mapping)

OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB에서 쓰이는 테이블을 자동으로 매핑하는 기술이다.

객체 모델이 관계형 모델에 매핑되며 생길 수 있는 불일치 문제는 객체 간의 관계를 표현하여 해결한다.

즉, ORM을 이용해 객체 간의 관계를 표현함으로써 SQL문을 작성하지 않고 RDBMS를 조작할 수 있다.

ORM의 장점

  • 객체 모델만을 이용하여 객체지향적으로 프로그래밍할 수 있다.
  • SQL을 직접 작성하지 않아도 된다.
  • 유지보수 용이(스키마의 수정이 필요할 때, 단순히 클래스를 수정하면 DB에 반영된다.
  • DBMS에 의존하지 않음으로써 도메인과 비즈니스 로직 설계에 더 집중할 수 있다.

ORM의 단점

  • 데이터의 관계가 복잡할수록 구현하기 어렵다.
  • 복잡한 SQL문을 처리하고기 어렵다.
  • 객체 - 관계 간의 불일치가 발생할 수 있다. (세분성, 상속성, 일치, 연관성, 탐색)

 


참고 자료:

https://deveun.tistory.com/entry/SQL-Mapper%EC%99%80-ORM-%EC%B0%A8%EC%9D%B4

 

SQL Mapper와 ORM 차이

프로그램을 실행하는 동안 그 안에서는 많은 데이터들이 사용되고, 만들어진다. 우리는 이 데이터들이 프로그램이 종료되어도 사라지지 않고 어떤 곳에 저장되는 것이 필요한데, 이 개념이 바

deveun.tistory.com

https://jongsky.tistory.com/15

 

ORM vs SQL Mapper

1. 글을 작성하게 된 이유 Rest API를 만들면서 생겨난 이슈사항이다. FastAPI를 이용해 request가 왔을 때 response를 해주는 Rest API를 만들고 있었다. response를 위해서는 기존에 만들어진 db(mysql)에서 데

jongsky.tistory.com

 

'백엔드 > JPA' 카테고리의 다른 글

[JPA] flush(), detach(), clear(), close(), merge()  (0) 2023.05.02
[JPA] 엔티티 조회, 등록, 수정, 삭제  (0) 2023.05.02
[JPA] 영속성 컨텍스트(persistence context)란?  (0) 2023.05.02
[JPA] JPA란?  (0) 2023.05.01
[JPA] 패러다임의 불일치  (0) 2023.05.01
  1. 영속성(Persistence)
  2. SQL Mapper
  3. SQL Mapper의 장점
  4. SQL Mapper의 단점
  5. ORM(Object Relation Mapping)
  6. ORM의 장점
  7. ORM의 단점
'백엔드/JPA' 카테고리의 다른 글
  • [JPA] 엔티티 조회, 등록, 수정, 삭제
  • [JPA] 영속성 컨텍스트(persistence context)란?
  • [JPA] JPA란?
  • [JPA] 패러다임의 불일치
밝은별 개발자
밝은별 개발자
호기심 가득한 밤을 하나씩 밝히는 밝은별입니다.
밝은별 개발자
밝은별 개발 블로그
밝은별 개발자
전체
오늘
어제
  • 전체 글 (59)
    • 자소서 (0)
    • 백엔드 (55)
      • Java (15)
      • 네트워크 (5)
      • JPA (11)
      • Spring (6)
      • 운영체제 (8)
      • MSA (4)
      • etc (4)
      • 데이터베이스 (2)
    • 프로젝트 (3)
      • Petogram (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 디자인 패턴
  • OS
  • MSA
  • HTTP
  • java8
  • 네트워크
  • 객체지향
  • EUREKA
  • 데이터베이스
  • 메모리
  • pojo
  • ORM
  • 이펙티브자바
  • 캐시
  • 상속
  • db
  • 영속성컨텍스트
  • Service discovery
  • 쓰기 지연
  • Spring
  • Java
  • 운영체제
  • 클린 아키텍처 #spring
  • Redis
  • JDK 동적프록시
  • JPA
  • 변경 감지
  • Petogram
  • 런타임데이터영역
  • 스트림

최근 댓글

최근 글

hELLO · Designed By 정상우.
밝은별 개발자
[JPA] SQL Mapper 와 ORM
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.