Study/Spring
[Spring DB] 데이터 접근 핵심 원리 - JDBC 이해
sw_develop
2025. 6. 28. 23:15
JDBC 이해
JDBC 등장 이유
어플리케이션 서버와 DB - 일반적인 사용법
- 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결한다.
- SQL 전달 : 어플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.
- 결과 응답 : 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 정보를 체크해서 본인이 처리할 수 있는 요청인지 확인함
- 이렇게 찾은 커넥션 구현체가 클라이언트에 반환된다.