JDBC 등장 이유
애플리케이션 개발할 때, 중요한 데이터는 대부분 데이터베이스에 보관
커넥션 연결 : 주로 TCP/IP를 사용해 커넥션 연결
SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 전달
결과 응답 : DB는 전달된 SQL 수행하고 결과 응답, 애플리케이션 서버는 응답 결과 활용
문제점
>> 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용코드도 변경해야 함
>> 개발자가 각각의 데이터 베이스마다 커넥션 연결, SQL 전달, 결과 응답 받는 방법 새로 학습해야 함
JDBC 표준 인터페이스
Java Database Connectivity는 자바에서 데이터 베이스에 접속할 수 있게 하는 자바 API
이 인터페이스를 각각의 DB 회사에서 자신에 맞도록 구현해 라이브러리로 제공
>> JDBC 드라이버
문제점 해결
>> 애플리케이션 로직은 JDBC 표준 인터페이스에만 의존, 데이터베이스 변경 시 JDBC 구현 라이브러리만 변경
>> 개발자는 JDBC 표준 인터페이스 사용법만 학습하면 됨
JDBC와 최신 데이터 접근 기술
JDBC를 편리하게 사용하는 다양한 기술
>> SQL Mapper, ORM 기술
SQL 응답 결과를 객체로 편리하게 변환
JDBC 반복 코드 제거
But, 개발자가 SQL 직접 작성
대표 기술 : 스프링 JdbcTemplate, MyBatis
객체를 관계형 데이터베이스 테이블과 매핑해주는 기술
>> 반복적인 SQL을 직접 작성하지 않고 ORM 기술이 개발자 대신 SQL을 동적으로 만들어 실행
>> 각각의 데이터베이스마다 다른 SQL을 사용하는 문제도 중간에서 해결
대표 기술 : JPA, 하이버네이트, 이클립스링크
데이터베이스 연결
데이터베이스에 연결하려면 JDBC가 제공하는 DriverManager.getConnection(...) 사용
>> 라이브러리에 있는 데이터베이스 드라이버를 찾아 해당 드라이버가 제공하는 커넥션 반환
>> H2 데이터베이스 드라이버가 작동해 실제 데이터베이스와 커넥션을 맺고 결과 반환
JDBC DriverManager 연결
JDBC는 java.sql.Connection 표준 커넥션 인터페이스 정의
H2 데이터 베이스 드라이버는 JDBC Connection 인터페이스를 구현한 org.h2.jdbc.JdbcConnection 구현체 제공
애플리케이션 로직에서 커넥션이 필요하면 DriverManager.getConnection() 호출
DriverManager는 라이브러리에 등록된 드라이버 목록 자동 인식
>> 드라이버들에게 순서대로 정보를 넘겨 커넥션 획득 가능 여부 확인
>> 이름, 비밀번호 등 접속에 필요한 추가 정보
>> 각 드라이버는 URL 정보를 체크해 처리 가능 요청인지 확인
찾은 커넥션 구현체가 클라이언트에게 반환
출처 : 김영한, 스프링 DB 1편 - 데이터 접근 핵심 원리
'Spring' 카테고리의 다른 글
DB / Transaction (0) | 2025.04.21 |
---|---|
DB / Connection Pool, DataSource (0) | 2025.04.20 |
MVC / 파일 업로드 (0) | 2025.04.18 |
MVC / 스프링 타입 컨버터 (0) | 2025.04.16 |
MVC / API 예외 처리 (0) | 2025.04.15 |