ORM vs SQL Mapper vs JDBC

‍bng4535·2023년 4월 3일
0

영속성(Persistence)

  • 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
  • Persistence Layer는 객체에 영속성을 부여하는 역할을 하며, 이를 어떻게 구현하느냐를 관점으로 ORM, SQL Mapper, JDBC를 비교할 수 있다.

JDBC(Java Database Connectivity)

  • 자바에서 DB에 접속할 수 있도록 하는 API
  • 자바 어플리케이션의 DBMS 종류에 상관 없이, 하나의 JDBC API를 이용해 DB작업 처리
  • 간단한 SQL 실행에도 중복 코드 반복적 사용
  • connection과 같은 공유 자원을 제대로 릴리즈 해주지 않으면 시스템 자원이 바닥나는 버그 발생
  • 이러한 단점 보완 -> Persistence Framework

Persistence Framework

  • JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 DB와 연동되는 시스템을 빠르게 개발
  • 복잡한 쿼리나 다이나믹하게 변경되는 쿼리 작성이 쉽다
  • DAO로부터 SQL문을 분리하여 코드의 간결성 및 유지보수성 향상 (관심사 분리)
  • ex) MyBatis
  • SQL Mapper, JDBC Template

    • SQL을 직접 작성
    • SQL문객체(Object)의 필드를 매핑하여 데이터 객체화 (객체와 관계 Mapping (x) )

코드상으로 SQL과 JDBC API를 분리하더라도 논리적으로 강한 의존성을 갖고 있다.

  • 테이블 마다 비슷한 CRUD SQL작업

  • 테이블 필드가 변경될 시 이와 관련된 모든 DAO의 SQL문, 객체 필드 등의 수정

  • 특정 DB에 종속적으로 사용하기 쉽다

  • 패러다임 불일치 문제
    객체지향(추상화, 상속, 다형성를 기반으로한 객체 중심 구조)과 RDB(데이터 중심의 구조)의 목적이 달라 생기는 문제

ORM

  • 객체와 관계형 DB를 맵핑
  • SQL Query가 아닌 직관적인 코드(메서드)로 데이터 조작
  • JPA는 ORM에 관한 인터페이스 명세
  • 상속과 연관을 간단한 코드로 작성하면 ORM이 내부적으로 처리
  • 도메인과 비즈니스 로직에 집중할 수 있다.
  • DB서버가 없는 상태에서 개발 가능 -> 유지보수에 유리
profile
공부 기록

0개의 댓글