본문 바로가기
Spring/DB

Spring ) JDBC 란?

by 윤시프16 2023. 1. 10.

 

 

JDBC 탄생 이유


우리는 DB를 조회를 할때 직접적으로 조회하지 않는다.

클라이언트는 일단 애플리케이션 서버한테 요청을 한다.

 

 

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

 

 

하지만 이런식으로 작동하는 것에는 문제점이 존재한다.

관계현 데이터 베이스는 수십개가 존재한다. 그 각각의 데이터 베이스는 커넥션을 연결하는 방법, 결과를 응답받는 방법이 모두 다르다.

 

방법이 다르면 여기서도 큰 문제점 2가지가 발생한다.

첫번째, 데이터 베이스를 변경하면 개발된 데이터 베이스 사용 코드도 함께 변경해야한다.

두번째, 개발자가 데이터베이스 마다 방법을 새로 학습해야한다.

 

이런 문제들을 해결해주는게 JDBC라는 자바 표준이다.

 

 

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. - 위키백과

 

JDBC 표준 인터페이스


 

1. java.sql.Connection - 연결
2. java.sql.Statement - SQL을 담은 내용
3. java.sql.ResultSet - SQL 요청 응답

 

이제 개발자들은 해당 인터페이스를 사용해서 개발을 하면된다.

 

 

JDBC 드라이버


하지만 인터페이스만 있다고 해서 개발이 가능 한것은 아니다. 인터페이스가 있다면 구현체가 필요하다.

각각의 DB회사(Oracle, MySQL)들은 자신의 DB에 맞는 구현제를 라이브러리로 제공한다. 이러한 구현체를 JDBC 드라이버라고 한다.

 

 

 

JDBC 의 등장으로 아까 말했던 2가지 문제를 해결 할 수있다.

 

첫번째, 데이터 베이스를 변경하면 개발된 데이터 베이스 사용 코드도 함께 변경해야한다.

 

-> 애플리케이션 로직은 이제 JDBC 표준 인터페이스에만 의존한다. 데이터베이스를 다른 종류의 데이터베이스로 변경하고 싶으면 JDBC 구현 라이브러리만 갈아 끼우면 된다.

 

 

두번째, 개발자가 데이터베이스 마다 방법을 새로 학습해야한다.

 

-> 개발자는 JDBC 표준 인터페이스 사용법만 학습하면 된다. 

 

 

해결하지 못한 문제점


각각의 데이터베이스마다 SQL, 데이터타입 등의 일부 사용법 다르다. 데이터베이스를 변경하면 SQL은 해당 데이터베이스에 맞도록 변경해야한다.
ex) 페이징 SQL

 

참고로 JPA(Java Persistence API)를 사용하면 이렇게 각각의 데이터베이스마다 다른 SQL을 정의해야 하는 문제도 많은 부분 해결할 수 있다.

 

 

 

 

 

 

 

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard

 

스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의

백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의

www.inflearn.com