[스프링] JDBC / MyBaits / JPA

Lil_Young·2025년 10월 31일

Spring

목록 보기
5/6
post-thumbnail

JDBC(Java Database Connectivity)

JDBC는 DB에 접근할 수 있도록 Java에서 제공하는 API이다.
모든 Java의 Data Access 기술(MyBatis, JPA 등)의 근간이 되는 기술이다.

JDBC 역할

  • DB 연결(Connection)
  • SQL 실행
  • 결과 처리
  • 리소스 해제

JDBC Driver

JDBC Driver는 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터이다.

DB마다 Driver가 존재하므로, 자신이 사용하는 DB에 맞는 JDBC Driver를 사용한다.

MyBatis

MyBatis는 JDBC의 반복적이고 번거로운 코드를 줄이기 위해 만들어진 SQL 매퍼 기반 데이터 접근 프레임워크이다.

개발자가 작성한 SQL 문을 Java 객체로 자동으로 매핑 시켜준다.

특징

  • Java 코드와 SQL 매핑하기 때문에, SQL 문을 직접 작성하고 최적화할 수 있다.
  • 동적 SQL 생성이 가능하다.

JPA(Java Persistence API)

JPA는 자바 진영의 표준 ORM(Object Relational Mapping) 기술로, 객체(Entity)와 데이터베이스 테이블 간 매핑을 자동으로 처리해 개발자가 SQL을 직접 작성하지 않고도 데이터를 관리할 수 있게 해준다.

특징

  • 자바에서의 ORM을 위한 표준 인터페이스를 제공한다.
  • 객체와 데이터베이스 간의 자동 매핑을 지원한다.
  • 객체 지향적인 개발에 중점을 둔다.
  • DB가 변경되어도 SQL 문을 다시 작성할 필요가 없다.
구분MyBatisJPA
개념SQL Mapper 기반 프레임워크ORM (Object Relational Mapping) 기반 표준 프레임워크
동작 방식SQL을 직접 작성하고 XML 또는 어노테이션으로 매핑엔티티 객체를 통해 테이블과 매핑, SQL은 내부적으로 자동 생성
개발 중심SQL 중심 개발 (쿼리 제어 중점)객체 중심 개발 (엔티티 중심 도메인 설계)
자동화 수준JDBC의 반복 코드 제거 정도 (반자동)SQL 생성, 매핑, 트랜잭션 관리까지 자동 (완전 자동화)
SQL 작성 여부개발자가 직접 작성직접 작성 필요 없음 (단, 복잡한 경우 @Query 가능)
동적 SQL 지원<if>, <where>, <foreach> 등으로 동적 쿼리 작성 가능Criteria API 또는 QueryDSL 등 별도 도구 필요
성능 튜닝세밀한 쿼리 제어 가능 → 튜닝 용이내부 SQL 자동 생성 → 튜닝 어려움 (쿼리 최적화 필요)
DB 독립성낮음 (DB별 SQL 수정 필요)높음 (DBMS 변경에도 코드 영향 적음)
학습 난이도낮음 (SQL 친숙한 개발자에게 쉬움)높음 (ORM 개념과 영속성 이해 필요)
대표 어노테이션@Mapper, @Select, @Insert@Entity, @Id, @GeneratedValue, @OneToMany
사용 목적SQL 제어와 튜닝이 중요한 서비스객체지향적인 설계와 생산성이 중요한 서비스
장점SQL 자유도 높음, 직관적인 로직 제어생산성 높음, 반복 코드 최소화, DB 독립성
단점SQL 관리 부담, 유지보수 어려움성능 예측 어려움, 학습 비용 높음
대표 사용 예시고성능 대형 트래픽 서비스, 복잡한 쿼리 다루는 시스템CRUD 중심 웹 서비스, 객체지향 설계 기반 시스템

0개의 댓글