SQL Mapper vs ORM

정미·2022년 6월 25일
0

Computer Science

목록 보기
12/81

Persistence 영속성

애플리케이션이 종료되어도 데이터가 사라지지 않고 저장되는 곳

Persistence Framework

JDBC 프로그래밍의 복잡함과 번거로움 없이 간단한 작업만으로 데이터베이스와 연동(자동으로 영속화)되는 시스템을 개발할 수 있다.

SQL Mapper

  • ObjectSQL 필드를 매핑하여 데이터를 객체화하는 기술
  • SQL에 의존적이다.
    • SQL을 직접 작성하여 쿼리 수행 결과를 어떤 객체에 매핑할지 결정
    • 객체와 테이블간의 매핑이 아님
  • 예시: MyBatis, JdbcTemplate

MyBatis

  • xml 파일에 따로 SQL을 관리하고 매핑을 도와준다.
  • 동적쿼리를 지원한다.

장점

  • 복잡한 쿼리의 경우 성능 튜닝에 유리하다.

단점

  • DBMS에 종속적이다.
  • 비슷한 쿼리를 반복적으로 작성해야 한다.
  • 객체와 관계형 테이블 구조 사이에 패러다임 불일치 발생
    • ex> 객체의 상속관계를 데이터베이스는 지원하지 않음

Object Relational Mapper (ORM)

  • ObjectRDB table을 매핑하여 데이터를 객체화하는 기술
  • ORM의 메서드를 사용하면 자동으로 SQL이 만들어진다.
  • 예시: Hibernate, EclipseLink, DataNucleus

Java Persistence API

  • Java 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음
  • JPA를 구현한 대표적인 오픈소스는 Hibernate가 있다.

장점

  • SQL이 아닌 객체 중심 개발이 가능하다.
    • 개발자는 비즈니스 로직을 구성하는데에만 집중할 수 있다.
    • 생산성과 유지보수성이 높아진다.
  • 객체와 RDB 테이블 사이 패러다임의 불일치를 해결한다.
  • DBMS에 종속적이지 않다.

단점

  • 설계가 잘못된 경우 속도 저하와 일관성을 무너뜨릴 수 있다.
  • 복잡한 쿼리는 속도를 위해 별도 튜닝이 필요하기 때문에 결국 SQL문을 작성해야 한다.
    • 이 경우 JPQL을 사용하거나, SQL Mapper와 혼용한다.
  • 학습 비용이 비싸다.

출처

0개의 댓글