
1. JDBC 등장 이유
- 웹/앱에서 보통 DB에 직접 연결하지 않음. 애플리케이션 서버에 요청을 보낸 후 애플리케이션 서버에서 DB에 query를 날림.

- 일반적인 사용법
커넥션 연결: 주로 TCP/IP를 사용해서 커넥션
SQL 전달: 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달.
결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답. 애플리케이션 서버는 응답 결과를 활용.

1-1. 과거 문제점
- 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용코드도 함께 변경해야 함.
- 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 알아야 함.
1-2. JDBC 표준 인터페이스
-
과거의 문제점으로 인해 등장.

-
대표 기능
java.sql.Connection - 연결
java.sql.Statement - SQL을 담은 내용
java.sql.ResultSet - SQL 요청 응답
-
JDBC로 인해 해결된 점
- 애플리케이션 로직이 JDBC 표준 인터페이스에만 의존한다. 따라서 데이터베이스를 다른 종류의 데이터베이스로 변경하고 싶으면 JDBC 구현 라이브러리만 변경.
- 개발자는 JDBC 표준 인터페이스 사용법만 학습
-
JDBC 한계
- 데이터베이스마다 SQL, 데이터타입 등의 일부 사용법 다름 -> 특히 페이징.
2. JDBC와 최신 데이터 접근 기술
2-1. SQL Mapper

- 장점
- SQL 응답 결과를 객체로 편리하게 변환.
- JDBC의 반복 코드를 제거.
- 단점
- 대표 기술
2-2. ORM 기술

- ORM은 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술
- 장점
- 반복적인 SQL을 직접 작성x
- SQL을 동적으로 만들어 실행
- 단점
- 대표 기술
3. 데이터베이스 연결
3-1. JDBC DriverManager 연결 이해

- JDBC는 java.sql.Connection 표준 커넥션 인터페이스를 정의
- H2 데이터베이스 드라이버는 JDBC Connection 인터페이스를 구현
- org.h2.jdbc.JdbcConnection 구현체를 제공
3-2. DriverManager 커넥션 요청 흐름

4. 참조
- 스프링 DB 1편 - 데이터 접근 핵심 원리
- 링크