JDBC vs MyBatis vs JPA, Hibernate 차이

go_go_·2023년 2월 12일
2

JPA

목록 보기
1/4
post-thumbnail

🔍 목차

  1. 영속성 - Persistence
  2. JDBC
  3. SQL Mapper - MyBatis
  4. ORM - JPA


📌 영속성 - Persistence

영속성(persistence)이란?

  • 사리지지 않는 데이터의 특성
  • 영속성을 갖는 데이터: DB, 파일 등에 데이터를 영구적으로 저장하여 사리지지 않음
  • 영속성을 갖지 않는 데이터: 메모리에만 데이터 존재, 프로그램 종료 시 데이터 사라짐

👀 Persistence Layer

소프트웨어 아키텍처 - Layered Architecture

  • Presentation, Business, Persistence, Database로 4계층으로 나뉘어져 있으며 각 계층마다 맡은 역할이 다름
  • 호출 방향: Presentation -> Business -> Persistence -> Database
  • Presenteation Layer
    • 클라이언트의 요청을 받고 응답하는 계층
    • 클라이언트의 요청에 어떻게 응답할지에 관심있는 계층
    • 요청에 대한 처리는 Business Layer에 전달
    • +) spring의 Controller 부분
  • Business Layer
    • 비즈니스 로직 담당
    • 클라이언트의 요청을 실제 처리하는 부분
    • 클라이언트가 웹인지 앱인지, DB가 어떤 종류인지 관심 없음
    • 데이터 접근은 Persistence Layer에 위임
    • +) spring의 Service 부분
  • Persistence Layer
    • DB 접근 계층
    • Business 요청에 따라 DB 저장, 조회, 삭제, 수정 등 로직 수행
    • 데이터에 영속성을 부여해주는 계층
    • JDBC를 이용하여 직접 구현할 수 있지만 Persistence frameworkd를 이용한 개발이 주
    • +) spring의 Repository 부분
  • Database Layer
    • DB 역할

👀 Persistence Framework

Persistence Layer에서 JDBC 프로그래밍의 복잡함 없이 간단하게 DB 연동되는 시스템 개발 및 안정적인 구동 보장하는 프레임워크이다. 종류는 SQL Mapper, ORM으로 두 가지이다.

  • SQL Mapper
    • SQL과 필드를 매핑
    • SQL 문장으로 직접 DB 다룸
    • ex. MyBatis, JdbcTemplates
  • ORM: 객체를 통해 DB
    • DB 데이터와 객체 매핑
    • 객체를 통해 DB 데이터 다룸
    • 메서드 통해 간단한 SQL 자동 생성 가능
    • ex. JPA, Hibernate


📌 JDBC

  • Java Database Connectivity
  • DB 접근, SQL 날리게 할 수 있는 자바 표준 API
  • 자바의 DB 접근 기술의 근간
    • 모든 Persistence Framework는 내부적으로 JDBC API 사용
  • JDBC API는 Driver Manage를 사용하여 각 DB에 맞는 드라이버를 로딩, 해제
  • 개발자는 JDBC API를 사용하여 DB 연결
  • DB 연결을 위한 connection 할당, 종료같은 부수적인 코드 증가
    • 이러한 복잡성을 줄이기 위해 persistence framework 등장(MyBatis, JPA, Hibernate.. 등)


📌 SQL Mapper - MyBatis

  • SQL Mapper - 객체와 SQL문을 매핑
  • 내부에 JDBC 사용
  • SQL로 직접 DB 데이터 다룸
  • 복잡한 쿼리 짤 때 좋음
  • 간단한 CRUD 쿼리도 모두 작성해야 하는 단점 존재


📌 ORM - JPA

JPA는 인터페이스, 이를 사용하기 위해 구현체를 선택해야한다.

  • ORM(Object-Relatoinal Mapping) - 객체와 DB 데이터 매핑
  • JPA - 자바 표준 ORM API, ORM을 사용하기 위한 표준 인터페이스 모음
  • 객체를 통해 간접적으로 DB 데이터 다룸
  • ORM framwork - JPA 구현체
    • Hibernate
    • EclipseLink

📢 Hibernate

  • JPA의 대표 구현체
  • 내부에 JDBC 사용
  • 간단한 CRUD 쿼리 메서드 제공 -> 메서드로 데이터 조작 가능
  • 복잡한 쿼리는 결국 SQL을 짜야함
    • native SQL이 아닌 객체 중심 SQL을 위한 JPQL, querydsl 기술도 있음
  • HQL이라 불리는 쿼리 언어 포함
    • HQL은 SQL과 비슷하면서 객체 지향 강점 누릴 수 있음(상속, 다형성 등)
    • 쿼리 결과로 객체를 반환
    • 클래스, 프로퍼티 이름 제외하고 대소문자 구분


참고 및 출처

profile
개발도 하고 싶은 클라우드 엔지니어

0개의 댓글