728x90
반응형
[스프링 DB] JDBC의 개념
JDBC 등장 이전 문제 인식
애플리케이션을 개발할 때 중요한 데이터는 대부분 데이터베이스에 보관합니다.
왜 데이터베이스에 보관할까요? 🤔
그 이유는 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문입니다.
App Server와 DB의 흐름
1. 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결
2. SQL 전달 : App Server는 DB가 이해할 수 있는 SQL을 커넥션을 통해 DB에 전달
3. 결과 응답 : DB는 전달받은 SQL을 실행하고 그 결과에 응답
고객사의 요청으로 DB
를 MySQL
에서 Oracle
로 변경하게 된다면 어떻게 될까요?🤔
MySQL
과 Oracle
는
커넥션을 연결하는 방법, SQL을 전달하는 방법, 결과를 응답 받는 방법이
모두 다릅니다.
다르다는 의미는 개발자가 기존 코드를 재사용하지 못하고 새롭게 개발해야 하는 것을 의미합니다…🥲
문제
- DB를 다른 종류로 변경하면 기존 코드 재사용 불가
- DB사에 맞게 개발자가 새롭게 개발
- 사용해야하는 DB가 100 종류라면…..? 😇
JDBC 등장 🦸🏻♀️
이러한 문제를 해결하기 위해 JDBC(Java Database Connectivity
)가 등장하게 되었습니다.
JDBC는 자바에서 데이터베이스에 접속할 수 있도록하는 자바 API 입니다.
JDBC
는 쉽게 이야기해서, App Server
와 DB
사이에 DB
를 이용하는데 필요한 기능을 표준 인터페이스로 정의하여 제공합니다.
JDBC 인터페이스에 맞춰 각 DB사에서 자신의 DB에 맞도록 구현해서 라이브러리로 제공하는데,
우리는 이것을 JDBC Driver라고 부릅니다.^^
정리
JDBC
의 등장으로 앞선 2가지 문제가 해결되었습니다.👍
DB를 다른 종류로 변경하면 기존 코드 재사용 불가
- 애플리케이션 로직은
JDBC
표준 인터페이스에만 의존하기 때문에 다른 종류의 DB로 변경하더라도 알맞은 DB Driver만 설치하면 기존 코드를 재사용할 수 있습니다.
DB사에 맞게 개발자가 새롭게 개발
- DB사에 따라 개발자가 새롭게 개발할 필요 없고,
JDBC
사용법만 알아두면 됩니다.
참고
728x90
반응형
'0+ 스프링 > 0+스프링 DB' 카테고리의 다른 글
[스프링 DB] MySQL의 트랜잭션 격리 수준(Transaction Isolation Level) 파헤치기 (0) | 2023.08.01 |
---|---|
[스프링 DB] 트랜잭션 전파(propagation) (0) | 2023.07.29 |
[스프링 DB] 데이터를 저장할 때 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유? (0) | 2023.07.06 |
[스프링 DB] 커넥션 풀과 DataSource의 개념 (0) | 2023.07.03 |