[DB 접근 기술] JDBC 이해

2022. 5. 25. 03:58Database/DB 접근 기술

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

 

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

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

www.inflearn.com

김영한 강사님의 인프런 강의를 수강 후 블로그에 정리해서 포스팅합니다. 


JDBC(Java Database Connectivity)란

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다.

JDBC의 등장 배경

JDBC는 표준 인터페이스로,
JDBC가 없던 시절에는 각각의 데이터베이스마다 서버와 연결하는 방법이 달랐다(RDB는 수십개가 있다).
이때는 개발자가 각각의 DB마다 커넥션 연결, SQL 전달, 결과 응답을 받는 방법들을 DB마다 새로 학습해야 했으며,
데이터베이스를 다른 종류의 데이터베이스로 변경하면 당연히 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함께 변경해야 했다. 

하지만 JDBC가 다음 3가지 기능을 표준 인터페이스로 정의해서 제공한 이후로 위의 문제점은 사라졌다.

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

따라서 개발자는 이 표준 인터페이스를 사용해서 개발하면 된다.

하지만, 인터페이스만 있다고해서 기능이 동작하지는 않는다. 이 JDBC 인터페이스를 각각의 DB 벤더 (회사)에서 자신의 DB에 맞도록 구현해서 라이브러리로 제공하는데, 이것을 JDBC 드라이버라 한다.
예를 들어MySQL DB에 접근할 수 있는 것은 MySQL JDBC 드라이버라 하고, Oracle DB에 접근할 수 있는 것은 Oracle JDBC 드라이버라고 한다.

아무튼, JDBC의 등장으로 다음 2가지 문제가 해결되었다.

1. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버의 데이터베이스 사용 코드도 함께 변경해야하는 문제
애플리케이션 로직은 이제 JDBC 표준 인터페이스에만 의존한다. 따라서 데이터베이스를 다른 종류의 데이터베이스로 변경하고 싶으면 JDBC 구현 라이브러리만 변경하면 된다. 따라서 다른 종류의 데이터베이스로 변경해도 애플리케이션 서버의 사용 코드를 그대로 유지할 수 있다.

2. 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습해야하는 문제
개발자는 JDBC 표준 인터페이스 사용법만 학습하면 된다. 한번 배워두면 수십개의 데이터베이스에 모두 동일하게 적용할 수 있다.

하지만, 데이터베이스가 변경되는 경우 JDBC 코드는 변경하지 않아도 되지만 SQL, 데이터 타입 등의 사용법은 각기 다르다. JPA를 사용하면 각각의 DB마다 다른 SQL을 사용하지 않아도 해결 가능하다(방언 기능)