Persistence, ORM

naeganugu·2022년 7월 9일
0

강의를 듣다가 JPA는 ORM 기술이다 어쩌구... 하시길래 ORM은 뭐지? 하는 마음에 더 찾아보게 되었다. 그런데 알고보니 강의 뒤쪽에 ORM 설명 강의가 있었다고 한다..

1. Persistence

우선 ORM을 알기 전에 Persistence란 무엇인가?

Persistence(영속성): 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성이다. DB에 저장을 해야 객체가 영속성을 가진다.


소프트웨어 아키텍쳐 중 하나인 Layered Architecture의 모습이다. Persistence 계층을 어떻게 구현하느냐에 따라서

  1. JDBC
  2. SQL Mapper
  3. ORM

이렇게 세 개로 나눌 수 있다. 이 중에 순수 JDBC만을 이용하는 방법은 JDBC, Persistence Framework를 이용하는 방법은 SQL Mapper, ORM 으로 나뉜다

2. JDBC만 이용하는 방법

JDBC: 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API.

자바 애플리케이션에서 DBMS의 종류에 상관없이, 하나의 JDBC API를 이용해 DB 작업을 처리한다. 각 DBMS는 이를 구현한 JDBC 드라이버를 제공한다. JDBC 인터페이스를 구현한 드라이버만 바꾸면 어떤 DB에서도 접근이 되는 것.

3. JDBC의 단점을 해결한 Persistence Framework

Persistence Framework는 내부적으로 JDBC API를 이용하는데, SQL Mapper와 ORM으로 나눌 수 있다.

1) SQL Mapper

Object와 SQL문을 매핑해서 데이터를 객체화한다. 직접 작성한 SQL문의 질의 결과와 객체의 필드를 매핑하여 데이터를 객체화한다.

JdbcTemplate도 SQL과 객체를 매핑한다는 점에서 SQL Mapper의 기능을 제공한다.

JDBC의 반복 작업을 많이 줄여준다는 장점이 있고, 쿼리 수행 결과와 객체의 필드를 매핑하여 반환을 받을 수 있다.

만약 순수 JDBC를 사용한다면, 결과를 다시 객체의 인스턴스로 매핑하기 위한 코드가 추가적으로 필요하나 SQL Mapper는 그렇지 않아도 된다는 장점이 있다.
하지만 여전히 SQL을 직접 작성해야 한다는 단점이 있다.

2) ORM

ORM은 객체와 관계형 데이터베이스를 매핑하는 것이다. 대표적인 예시로 JPA.
JPA: 자바 ORM 기술에 대한 API 표준 명세. 인터페이스를 모아둔 것. 따라서 우리가 사용할 때는 JPA를 구현한 구현체를 사용하는데 가장 유명한 게 Hibernate.

패러다임 불일치 문제를 해결해주어 객체지향 언어가 가진 장점을 활용할 수 있다. 지루하고 반복적인 CRUD용 SQL을 개발자가 직접 작성하지 않아도 된다.(SQL Mapper의 단점 극복!)

출처:[10분 테코톡] ⏰ 아마찌의 ORM vs SQL Mapper vs JDBC
테코톡 너무 좋다💙 멈추지말고 계속 해주세요..🥲

profile
seungseung-zanggu

0개의 댓글