공부해봅시당
[자습시간! DataBase] JDBC와 DBCP에 대해 알아보자 본문
JDBC란?
JDBC는 Java Database Connectivity의 약자로 자바에서 데이터베이스에 연결하기 위한 인터페이스이다.
이전에 RDBMS를 지원하는 3대 DB에 대해 알아보았다.
RDBMS를 지원하는 3대 DB에 따라 SQL문이 다를 수 있다는 것도 이미 설명한 바 있다.
RDBMS를 지원하는 3대 DB의 특징은 이 뿐만이 아니다.
각 DB를 사용하기 위한 SQL문을 실행하기 위한 실행 도구는 DB Client 프로그램으로, 각 DB마다 연결/인증, 문장실행, 결과패치 순으로 진행된다.
하지만 DB Client 프로그램을 일반인이 사용하기란 쉽지 않다. SQL 언어를 알아야 사용할 수 있기 때문이다.
더해, 일반인은 업무용 프로그램만 사용할 수 있으면 되기 때문에 굳이 SQL 언어를 학습하여 DB Client 프로그램을 사용할 필요도 없다.
따라서 업무용 프로그램을 위한 쿼리 실행도구인 DB API가 필요한 것이다.
DB API는 Oracle, MySQL 등 SQL을 지원하는 기업체에서 지원한다.
위 말의 의미는, 지원하는 기업체마다 DB API에서 사용하는 함수이름 등 세부사항이 다를 수 있다는 것을 의미한다.
'연결/인증, 문장실행, 결과패치' 순으로 진행되는 순서는 동일한데, DB API가 다르기 때문에 문제가 생기는 것이다.
약간의 차이 때문에 특정 DBMS가 가지는 기능들을 모두 알고 있어야만 하는 것이다. 우리는 3대 DB만을 살펴보았지만, DB의 종류는 훨씬 더 다양하다. 프로그래머 입장에서는 상당히 골치아픈 일인 것이다.
이를 해결할 수 있는 것이 JDBC인 것이다. JDBC는 사용자들이 직접 연결하지 않도록 대신 해주는 기능들을 가지고 있다.
JDBC는 특정 DBMS가 가지는 차이점을 단일화 하여, DB API를 직접 사용하지 않고 DB에 연결할 수 있도록 해준다. 물론 함수 이름도 동일하기 때문에 사용하기 편리하다.
따라서 프로그래머는 특정 DBMS가 가지는 차이점은 알 필요 없이 JDBC가 제공하는 기능들만 알면 쉽고 간편하게 DB에 연결할 수 있게 되는 것이다.
하지만 JDBC는 빈 깡통일 뿐, 실제 구동을 위한 코드는 아니다. 실제 구동을 위한 코드는 JDBC Driver에 있다.
DB를 구동하기 위한 코드는 JDBC Driver에 있고, JDBC Driver를 사용하기 위한 것이 JDBC에 있는 것이다.
따라서 우리는 앞으로 DB를 이용하기 위해 각 DB의 사이트에서 JDBC Driver를 다운받아 이용하면 되는 것이다.
DBCP란?
앞에서 JDBC에 대해 살펴보았다.
JDBC와 JDBC Driver만 있으면 DataBase에 접속을 할 수 있다는 내용이었다.
그렇다면 DBCP는 무엇일까?
DBCP는 DataBase Connection Pool의 약자로, DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다.
즉, 효율을 책임지는 것이다.
JDBC만을 사용할 경우, DB 접속 시 아래와 같은 순서가 반복된다.
- DB 접속을 위한 JDBC 드라이버 로드
- getConnection Method로 DB 커넥션 객체를 얻음
- 쿼리 수행을 위한 PrepareStatement 객체 생성
- executeQuery를 실행하여 결과를 받아옴
여기서 비효율적인 부분은 첫번째와 두번째이다.
DB에 연결할 때마다 Driver를 로드하고 커넥션 객체를 얻는 작업을 반복하는 것이다.
이 부분을 효율적으로 처리하도록 바꾼 것이 DBCP의 역할이다.
DBCP를 사용하면 WAS(Web Application Server : DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server) 실행 시 미리 일정량의 DB Connection 객체를 생성하고 Pool이라는 공간에 저장해 뒀다가 DB 연결 요청이 있으면 Pool이라는 공간에서 Connection 객체를 가져다 쓰고 반환하게 된다.
이에 따라 DBCP에서는 아래 기능들을 제공한다.
- maxActive : 동시에 사용할 수 있는 최대 커넥션 개수
- maxIdle : Connection Pool에 반납할 때 최대로 유지될 수 있는 커넥션 개수
- minIdle : 최소한으로 유지할 커넥션 개수
- initialSize : 최소로 getConnection() Method를 통해 커넥션 풀에 채워 넣을 커넥션 개수
따라서 JDBC는 JDBC Driver를 통해 DB에 편리하게 접속할 수 있도록 해주는 도구이며,
DBCP는 JDBC를 효율적으로 관리하기 위한 기법이라는 것을 알고 사용하도록 하자.
참고자료
https://aljjabaegi.tistory.com/402
JDBC, DBCP란? 웹 어플리케이션의 DB접속에 대한 고찰
JDBC, DBCP란? 웹 어플리케이션의 DB접속에 대한 고찰 자바 웹 어플리케이션에서 DB 접속과 관련된 라이브러리가 JDBC, DBCP 입니다. JDBC는 Java DataBase Connectivity 의 약자로 자바에서 데이터베이스에 연
aljjabaegi.tistory.com
https://www.youtube.com/watch?v=I3wr6mYmkio
https://www.youtube.com/watch?v=c0s7g7iVtwc
https://ko.wikipedia.org/wiki/JDBC
JDBC - 위키백과, 우리 모두의 백과사전
JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 썬 마이크로시스템즈는 19
ko.wikipedia.org
JDBC - JDBC란?
JDBC - Java Database Connectivity - 자바에서 DB 프로그래밍을 하기 위해 사용되는 API ==> 데이터베이스 종류에 상관없다. JDBC API 사용 어플리케이션의 기본 구성 - JDBC 드라이버 : 각 DBMS..
dyjung.tistory.com
https://m.blog.naver.com/bgpoilkj/221672288866
[자바] Java jdbc사용하기
안녕하세요 S Writer입니다. 오늘은 자바에서 데이터베이스에 연결해보는 작업을 해볼건데요. 자바에 데...
blog.naver.com
https://velog.io/@underlier12/JDBC-01.-JDBC%EB%9E%80-u4k5ucyqml
JDBC(Java Data Base Connectivity)
본 후기는 뉴렉처 자바 JDBC 강의를 보고 작성하였습니다. 01. JDBC란 자바 언어로 다양한 종류의 관계형 데이터베이스에 접속하고 SQL문을 수행하여 처리하고자 할 때 사용되는 표준 SQL 인터페이스
velog.io
https://shs2810.tistory.com/18
JDBC란 무엇일까?
Java를 공부하다보면 자연스레 JDBC 에 대한 내용도 공부해야하는데 JDBC란 무엇일까?? 0. SQL에 대한 간단한 내용 - SQL : Structured Query Language, 데이터베이스 제어 언어 1) DML : Data Manipulation Lang..
shs2810.tistory.com
https://help.tableau.com/current/pro/desktop/ko-kr/examples_otherdatabases_jdbc.htm
기타 데이터베이스(JDBC)
Tableau를 시작할 때 연결에서 Tableau Desktop이 지원하는 파일 및 데이터베이스 유형을 볼 수 있습니다
help.tableau.com
제8장 DB Connection Pool과 JDBC
. . . oracle datasource1 jdbc/ds1 johan_container1 oracle.jdbc.pool.OracleConnectionPoolDataSource ConnectionPoolDataSource ora9i This is a sample for database setting. scott tiger 1521 192.168.1.2 driverType java.lang.String thin true Warning . . . . . .
technet.tmaxsoft.com
https://hsunnystory.tistory.com/160
[Java] JDBC를 이용한 데이터베이스 연결 - 예제
JDBC를 사용하귀 위한 mysql-connector 설정 방법은 아래 포스팅을 참고하기 바랍니다. https://hsunnystory.tistory.com/158?category=791615 JDBC란? 자바 프로그램 안에서 SQL을 실행하기 위해 데이터베이스를..
hsunnystory.tistory.com
https://codingwell.tistory.com/23
[ Java ] JDBC 사용하는 방법
JDBC란? JDBC란, 자바 언어로 다양한 종류의 관계형 데이터베이스에 접속하고 SQL문을 수행하여 처리하고자 할 때 사용되는 표준 SQL 인터페이스 API입니다. 즉, 자바에서 데이터베이스를 사용하기
codingwell.tistory.com
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
https://www.youtube.com/watch?v=bxoDI62v-CU
https://kchanguk.tistory.com/14
DBCP
DBCP란 DBCP의 개념 DBCP란 DataBase Connection Pool의 약자로 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 합니다. 일반적으로 JDBC를 이용한다면 아래와 같은 순서로 DB에 접속합니다. DB 접속을 위한
kchanguk.tistory.com
https://leminity.tistory.com/20
jdbc, dbcp 차이?
오늘 일과중에 예전에 학원에서 같이 교육받았던 동생한테서 연락이 와서 이런 저런 얘기를 나누다가 요즘은 뭐 배우고 있냐고 물었더니, JDBC랑 DBCP를 배웠는데 갑자기 DBCP가 더 빠르다고 말한
leminity.tistory.com
'STUDY > DATABASE' 카테고리의 다른 글
[DATABASE] SQLD 데이터 독립성에서부터 스키마 3계층까지 (2) | 2024.03.08 |
---|---|
[자습시간! DataBase] 트랜잭션에 대해 알아보자 (0) | 2021.07.28 |
[자습시간! DataBase] InnoDB와 MyISAM을 알아보자 (0) | 2021.07.12 |
[쉽게 배우자! DataBase] 대표적인 3대 DB를 알아보자 (2) | 2021.07.05 |
[쉽게 배우자! DataBase] DataBase와 DBMS란 무엇일까 (8) | 2021.07.04 |