이론

JDBC

728x90

정의

 

자바에서 데이터베이스에 상관없이 DBMS에 접근하기 위해 사용되는 API

디비 접속, SQL 실행, 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 대한 규약

네이버의 경우 DDos 공격으로 L4가 죽어 네트워크가 단절되어 WAS도 동작 불능 상태가 되었다.

 

WAS의 쓰레드 덤프를 통해 JDBC의 API 호출 중에 WAS가 정지해있음을 알게 되었고, 10~20분이 지나도 WAS는 여전히 WAITING였고, 서비스는 정상동작하지 않았다. 그런데 30분 지나서 Exception을 발생시키면서 서비스가 복구되었다고 한다.

QueryTimeout도 3초인데 왜 30분씩이나 WAS가 정지되어 있고, 왜 30분이 지나서 동작한걸까?

d2.naver.com/helloworld/1321

 

JDBC 드라이버 : DBMS와 통신을 담당하는 자바 클래스, DBMS 별로 알맞은 드라이버가 필요함

*드라이버 : HW를 제어하는 SW의 뜻. SQL를 제어하는 SW라고 이해하면 됨.

 

 

JDBC의 구조

 

JDBC는 크게 인터페이스와 드라이버로 나눠짐

응용 프로그램에서는 SQL문을 만들어 JDBC 인터페이스를 통해 전송하면 실제 구현 클래스인 드라이버에서 DBMS에 접속을 시도하여 SQL문을 전송함.

 

DBMS의 결과는 JDBC 드라이버와 인터페이스에게 전달되고 이를 다시 응용프로그램에서 전달되어 결과를 볼 수 있음.

 

JDBC 드라이버 로딩

데이터베이스 벤더에 맞는 드라이버를 호출함

데이터베이스와의 연결을 위해 드라이버를 로딩함

 

Connection

 

Statement/ PreparedStatement

SQL 구문을 정의하고

 

WAS와 DBMS의 통신시 타임아웃 계층

상위 레벨의 타임아웃은 하위레벨의 타임아웃에 의존성을 가지고 있다.

 

 

커넥션 풀

 

JSP 페이지를 실행할 때마다 커넥션을 생성하고 닫는 데 시간이 소모되기 때문에 동시 접속자가 많은 웹 사이트에서는 전체 성능이 낮아진다.

성능 문제를 해결하기 위해서 사용하는 일반적인 방식은 커넥션 풀 기법을 사용하는 것이다.

 

 

커넥션 풀이란

 

데이터베이스와 연결된 커넥션을 미리 만들어서 풀 속ㅇ ㅔ저장해 두고 있다가 필요할 때에 커넥션에 풀에서 가져다 쓰고 다시 풀에 반환하는 기법을 의미한다

 

 

풀속에 미리 커넥션이 생성되어 있어서 생성하는 데 드는 연결시간을 줄일 수 있다.

커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수가 일정하게 유지된다.

 

 

 

'이론' 카테고리의 다른 글

팩토리패턴  (0) 2021.04.16