JDBC(Java Database Connectivity)
JDBC란 자바에서 데이터베이스에 접속할 수 있도록 하는 자바API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. - 위키피디아 ( https://ko.wikipedia.org/wiki/JDBC )
JDBC는 자바 애플리케이션에서 데이터베이스에 접근하기 위한 표준 스펙이다.
즉, JDBC를 이용하여 자바코드로 데이터베이스에 접근하여 데이터를 생성, 수정, 삭제 등의 작업이 가능하며 다양한 벤더(Oracle, MS SQL, MySQL 등)의 데이터베이스와 연동할 수 있다.
자바 애플리케이션에서 JDBC API를 통해 JDBC 드라이버를 로딩한 후, 데이터베이스에 접근한다.
JDBC 드라이버는 RDBMS의 종류에 따라 각각 알맞는 JDBC 드라이버가 존재하고 제공된다.
JDBC API 사용 흐름
Java 코드 상에서 JDBC API를 사용하는 일반적인 흐름이다.
- JDBC 드라이버 로딩 - 사용하고자 하는 JDBC 드라이버를 로딩한다. JDBC 드라이버는 DriverManager라는 클래스를 통해서 로딩된다.
- Connection 객체 생성 - JDBC 드라이버가 정상적으로 로딩되면 DriverManager를 통해 데이터베이스와 연결되는 세션(Session)인 Connection 객체를 생성한다.
- Statement 객체 생성 - Statement 객체는 작성된 SQL 쿼리문을 실행하기 위한 객체로써 객체 생성 후에 정적인 SQL 쿼리 문자열을 입력으로 가진다.
- Query 실행 - 생성된 Statement 객체를 이용해서 입력한 SQL 쿼리를 실행한다.
- ResultSet 객체로부터 데이터 조회 - 실행된 SQL 쿼리문에 대한 결과 데이터 셋이다.
- ResultSet 객체 Close, Statement 객체 Close, Connection 객체 Close - JDBC API를 통해 사용된 객체들은 사용 이후에 사용한 순서의 역순으로 차례로 Close를 해주어야 한다.
JDBC와 Spring JDBC에서는 위의 과정들을 모두 개발자가 직접 해줘야 됬었다...
Connection Pool
JDBC API를 사용해서 데이터베이스와의 연결을 위한 Connection 객체를 생성하는 작업은 비용이 많이 드는 작업 중 하나이다.
따라서 애플리케이션 로딩 시점에 Connection 객체를 미리 생성해 두고 애플리케이션에서 데이터베이스에 연결이 필요할 경우, Connection 객체를 새로 생성하는 것이 아니라 미리 만들어 둔 Connection 객체를 사용하며 다음 작업 때 재사용함으로써 애플리케이션의 성능을 향상시킬 수 있다.
Servlet pool에서 Servlet을 관리해주는 것처럼 Connection Pool 또한 Connection을 미리 만들어서 보관하고 애플리케이션이 필요할 때 이 Connection을 제공해 주는 등 Connection 관리자로써의 역할을 한다. 현재 JDBC API를 가동시키면 HikariPool이 DBCP(Database Connection Pool)로써 가동이 된다.
'Java > Spring & Spring Boot' 카테고리의 다른 글
Spring Data JDBC에서 Offset-Pagination 적용하기 (0) | 2023.04.21 |
---|---|
Spring Data JDBC (0) | 2023.04.20 |
Exception, 예외 처리 (0) | 2023.04.18 |
Entity와 Mapper (0) | 2023.04.13 |
DTO (Data Transfer Object) 과 Validation (0) | 2023.04.12 |