Study/Spring

[Spring DB] 데이터 접근 핵심 원리 - JDBC 이해

sw_develop 2025. 6. 28. 23:15

JDBC 이해

JDBC 등장 이유

어플리케이션 서버와 DB - 일반적인 사용법

  1. 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결한다.
  2. SQL 전달 : 어플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.
  3. 결과 응답 : DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 어플리케이션 서버는 응답 결과를 활용한다.

 

어플리케이션 서버와 DB - DB 변경

  • 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 결과를 응답 받는 방법이 모두 다름
  • 이런 문제를 해결하기 위해 JDBC라는 자바 표준이 등장함

 

JDBC 표준 인터페이스

  • 대표적으로 다음 3가지 기능을 표준 인터페이스로 정의해서 제공함
    • java.sql.Connection - 연결
    • java.sql.Statement - SQL을 담은 내용
    • java.sql.ResultSet - SQL 요청 응답
  • JDBC 인터페이스를 각각의 DB 벤더에서 자신의 DB에 맞도록 구현해서 라이브러리로 제공하고 이것을 'JDBC 드라이버'라고 함

 

JDBC와 최신 데이터 접근 기술

  • JDBC를 직접 사용하기 보다 JDBC를 편리하게 사용하는 다양한 기술이 존재
  • 대표적으로 SQL Mapper와 ORM 기술로 나눌 수 있음

 

1) JDBC 직접 사용

 

2) SQL Mapper

  • 장점
    • JDBC를 편리하게 사용하도록 도와준다.
    • SQL 응답 결과를 객체로 편리하게 변환해준다.
    • JDBC의 반복 코드를 제거해준다.
  • 단점
    • SQL을 직접 작성해야 한다.
  • 대표 기술 : 스프링 JdbcTemplate, MyBatis

 

3) ORM 기술

  • ORM은 객체를 관계형 DB 테이블과 매핑해주는 기술
  • 반복적인 SQL을 직접 작성하지 않고, ORM 기술이 개발자 대신에 SQL을 동적으로 만들어 실행해줌
    • 추가로 각각의 DB마다 다른 SQL을 사용하는 문제도 중간에서 해결해줌
  • 대표 기술 : JPA, Hibernate, EclipseLink
    • JPA는 자바 진영의 ORM 표준 인터페이스이고, 이것을 구현한 기술로 Hibernate와 EclipseLink 등이 있음

 

데이터베이스 연결

JDBC DriverManager 연결 이해

JDBC 커넥션 인터페이스와 구현

  • JDBC는 java.sql.Connection 표준 커넥션 인터페이스를 정의함
  • H2 데이터베이스 드라이버는 JDBC Connection 인터페이스를 구현한 org.h2.jdbc.JdbcConnection 구현체를 제공함

 

DriverManager 커넥션 요청 흐름

  • JDBC가 제공하는 DriverManager는 라이브러리에 등록된 DB 드라이버들을 관리하고, 커넥션을 획득하는 기능을 제공함
  • 흐름
    • 어플리케이션 로직에서 커넥션이 필요하면 DriverManager.getConnection()을 호출한다.
    • DriverManager는 라이브러리에 등록된 드라이버 목록을 자동으로 인식한다. 이 드라이버들에게 순서대로 다음 정보를 넘겨서 커넥션을 획득할 수 있는지 확인한다.
      • URL, 이름, 비밀번호 등 접속에 필요한 추가 정보 전달
      • 각각의 드라이버는 URL 정보를 체크해서 본인이 처리할 수 있는 요청인지 확인함
    • 이렇게 찾은 커넥션 구현체가 클라이언트에 반환된다.

 

참고