[TIL] 멋쟁이사자처럼 백엔드 자바 부트캠프 수강생 후기 - JDBC란 무엇인가 feat. JPA

JDBC란 무엇인지, JPA와는 어떤 관계인지 궁금하셨나요? 멋쟁이사자처럼 백엔드 자바 부트캠프 24기 수강생이 JDBC 개념, Driver 역할, Facade 패턴까지 직접 정리한 TIL로 핵심 개념을 확인해 보세요.
[TIL] 멋쟁이사자처럼 백엔드 자바 부트캠프 수강생 후기 - JDBC란 무엇인가 feat. JPA

[멋쟁이사자처럼이 전하는 말]

자바 백엔드를 처음 배우면서 가장 많이 헷갈리는 개념 중 하나가 바로 JDBC예요.

"Java에서 DB에 어떻게 연결하는 거지?", "JDBC랑 JPA는 뭐가 다른 거야?" 멋쟁이사자처럼 백엔드 부트캠프에서는 수강생들이 배운 내용을 학습 일기, TIL(Today I Learned)로 직접 기록하고 공유해요.

오늘은 JDBC란 무엇인지부터 Driver 역할, 실무에서 핵심이 되는 Facade 패턴과의 관계까지 꼼꼼하게 정리한 수강생의 TIL을 함께 살펴볼게요.

💡

이런 분들이 읽으면 좋아요!

  • 멋쟁이사자처럼 백엔드 자바 부트캠프가 어떻게 운영되는지 궁금한 분

  • JDBC란 무엇이고 JPA와 어떻게 다른지 헷갈리는 분

  • 백엔드 자바 부트캠프 합류를 고민하고 있거나 독학 중이신 분


개요

최근 멋쟁이사자처럼 백엔드 과정에 참여하여 수업을 듣고 있습니다. 이번 수업에서 JDBC라는 개념을 알게 되었고, 실무에서 자주 사용되는 JPA에서 어떻게 사용이 되는지, 어떤 개념인지에 대해 정리해보고자 합니다.


1. JDBC가 왜 필요할까?

Java 애플리케이션에서 데이터베이스에 데이터를 저장하거나 조회하고 싶다고 상상해봅니다.

그런데 DBMS의 종류는 정말 다양합니다.

  • MySQL

  • Oracle

  • PostgresSQL...

각 DBMS 회사들은 자기 회사만의 방식으로 데이터를 주고받습니다. 예를 들어 각국의 사람들이 각자 나라의 언어로 대화하는 것과 같습니다. 이때 통역사가 없다면 대화 주체는 각 사람들에게 각국의 언어로 말을 해줘야할 것입니다.

이와 같이 만약 JDBC가 없다면 MySQL용 자바 코드와 Oracle용 자바 코드를 따로따로 작성해야 합니다.

// MySQL 전용 코드 (가상의 예시)
MySQLDriver driver = new MySQLDriver();
driver.mysqlConnect("localhost", "root", "1234");
driver.mysqlQuery("SELECT * FROM user");

// Oracle 전용 코드 (가상의 예시)
OracleDriver driver = new OracleDriver();
driver.oracleConnect("localhost", "scott", "tiger");
driver.oracleFetch("SELECT
 * FROM user");

DB를 바꿀 때마다 코드 전체를 다시 써야 합니다. 이건 너무 비효율적이죠.

JDBC는 이 문제를 해결하기 위해 등장했습니다.


2. JDBC란?

JDBC(Java Database Connectivity)

Java 애플리케이션이 어떤 데이터베이스든 동일한 방법으로 사용할 수 있게 해주는 표준 인터페이스입니다.

쉽게 말하면, "Java와 DB 사이의 공통 번역기" 입니다.

Java 코드는 항상 JDBC라는 동일한 인터페이스만 바라봅니다.

어떤 DB를 쓰든 Java 코드는 바뀌지 않습니다. Driver만 교체하면 됩니다.


3. Driver란?

JDBC Driver

각 DB 회사가 제공하는 "실제 번역 담당자" 입니다.

JDBC의 표준 인터페이스를 각 DB에 맞게 실제로 구현한 라이브러리(.jar 파일)입니다.

비유로 이해하기

외국인 고객(Java 코드)이 한국 식당(DB)에 왔다고 상상해봅시다.

  • 고객은 영어로만 말합니다 → Java 코드

  • 식당은 한국어만 압니다 → MySQL / Oracle 등

  • 중간에서 통역해주는 사람 → JDBC Driver

  • 번역 메뉴얼 → JDBC고객은 항상 영어로 말하면 됩니다.식당이 바뀌면 통역사(Driver)만 교체하면 됩니다.고객(Java 코드)은 아무것도 바꾸지 않아도 됩니다.

Driver 설정 방법

Maven을 사용한다면 pom.xml에 한 줄만 추가합니다:

<!-- MySQL Driver -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.31</version>
</dependency>

이 .jar 파일 안에 MySQL 전용 번역 코드가 들어 있습니다.


4. JDBC의 핵심 구성 요소

JDBC는 크게 4가지 객체로 동작합니다.

객체

역할

비유

DriverManager

Driver를 관리하고 Connection 생성

통역사 파견 센터

Connection

DB와의 연결(세션) 유지

통역사와의 계약서

PreparedStatement

SQL 문장을 DB로 전달

주문서

ResultSet

SELECT 결과를 담는 그릇

음식이 담긴 트레이

기본 흐름

1. DriverManager.getConnection() → Connection 생성 (DB에 연결)
2. conn.prepareStatement(sql)   → PreparedStatement 생성 (SQL 준비)
3. ps.setString(1, value)       → 파라미터 바인딩 (값 채우기)
4. ps.executeQuery()            → SQL 실행
5. rs.next() / rs.getString()   → 결과 읽기
6. rs.close() / ps.close() / conn.close() → 리소스 해제 ← 매우 중요!

JDBC에서의 Facade(퍼사드) 패턴

텍스트JDBC의 기능과는 크게 관련이 없지만 알아두면 좋을 것 같아 같이 작성하였습니다.

JDBC를 공부하다보면 퍼사드 패턴이라는 디자인 패턴과 깊은 관련이 있다는 것을 알 수 있습니다. JDBC 자체가 세계에서 가장 성공적으로 적용된 퍼사드 패턴 사례 중 하나로 꼽히기 때문입니다.

Facade의 뜻

Facade(파사드)는 프랑스어로 "건물의 정면" 을 의미합니다.

건물을 생각해봅시다.

건물 안에는 전기 배선, 수도관, 철근, 단열재 등 복잡한 것들이 가득합니다.

하지만 우리는 그 복잡함을 알 필요 없이 문만 열고 들어가면 됩니다.

Facade 패턴은 이것과 같습니다.

복잡한 내부 구조를 숨기고, 단순한 인터페이스 하나만 외부에 제공하는 디자인 패턴

JDBC에서 Facade 패턴

JDBC가 바로 Facade 패턴의 좋은 예시입니다.

[Java 개발자가 보는 것]          [실제 내부에서 일어나는 것]

Connection conn =           →   MySQL 드라이버가 TCP 소켓을 열고
  DriverManager                  DB 서버와 핸드셰이크를 수행하고
    .getConnection(url)           인증 패킷을 주고받고
                                  세션을 초기화하고...

개발자는 getConnection() 한 줄만 작성합니다.

내부의 복잡한 네트워크 통신, 인증, 세션 관리는 Driver가 알아서 처리합니다.

또 다른 예시로 이해하기

우리가 TV 리모컨을 사용할 때를 생각해봅시다.

[사용자 인터페이스]    [실제 내부 동작]
전원 버튼 누름  →  전기 신호 변환 → 적외선 송출 → TV 수신부 감지
               →  메인보드 부팅 로직 실행 → 디스플레이 패널 활성화...

우리는 전원 버튼(Facade) 만 알면 됩니다.

내부 동작은 몰라도 됩니다.

JDBC도 마찬가지입니다.

개발자는 ConnectionPreparedStatementResultSet이라는 단순한 인터페이스(Facade) 만 사용합니다.

각 DB Driver의 복잡한 내부 구현은 숨겨져 있습니다.


6. 전체 구조 한눈에 보기

┌─────────────────────────────────────────────┐
│               Java 애플리케이션                 │
│                                             │
│  Connection / PreparedStatement / ResultSet │
│         ← JDBC 표준 인터페이스 (Facade)         │
└──────────────────┬──────────────────────────┘
                   │
        ┌──────────┴──────────┐
        │    DriverManager    │  ← Driver 관리
        └──────────┬──────────┘
                   │
     ┌─────────────┼─────────────┐
     ▼             ▼             ▼
[MySQL Driver] [Oracle Driver] [PG Driver]
     │             │             │
     ▼             ▼             ▼
  [MySQL DB]  [Oracle DB]   [PostgreSQL DB]

7. 정리

개념

한 줄 요약

JDBC

Java와 DB를 연결해주는 표준 인터페이스

Driver

각 DB 회사가 만든 실제 구현체 (번역 담당자)

Facade 패턴

복잡한 내부를 숨기고 단순한 창구 하나만 제공하는 설계 방식

JDBC 덕분에 우리는 DB가 바뀌어도 Driver만 교체하면 됩니다.

복잡한 내부 동작은 Driver가 알아서 처리해주고,

개발자는 단순한 JDBC 인터페이스만 사용하면 됩니다.

이것이 바로 Facade 패턴이 실제로 활용되는 모습입니다.


마무리

BE에 대해서는 처음 공부를 하다보니 JDBC 하나를 이해하는 데에도 생각보다 많은 개념이 엮여 있네요. Driver나 Facade 패턴 등 강의를 들을 땐 그냥 넘어갔던 개념들인데 글로 직접 정리하면서 조금씩 이해하게 된 것 같습니다.

아직 모르는 게 훨씬 많지만 이렇게 글로 정리를 해두면 조금이라도 머릿속에 오래 남겠죠?!


백엔드를 처음 공부할 때 JDBC 하나를 이해하는 데도 Driver, Facade 패턴, JPA까지 여러 개념이 엮여 있다는 걸 알게 되는 과정 자체가 성장이에요.

멋쟁이사자처럼 부트캠프에서는 이처럼 배운 내용을 기록하고 체계화하는 루틴이 수강생들의 실력으로 자연스럽게 쌓여가고 있어요. 백엔드 개발이 궁금하다면 지금 바로 확인해 보세요.

멋쟁이사자처럼 백엔드 자바 부트캠프 상세 보기
Share article