땅콩둘기 2024. 10. 21. 16:12
반응형

이것도 면접 때 들었는데 자바와 데이터베이스를 연결해 주는 겁니다!라고 외치고 넘겨버렸다

어떻게 보면 맞는말인데 더 자세히 써보려고 쓰기 시작

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리 하거나 업데이트하는 방법을 제공한다.

출처 : 위키

 

와우 API를 말하는 거였구나 

자바에서 각종 데이터베이스에 접속할 수 있도록 연결해 주는 매개체라고 할 수 있겠다.

 

JDBC 동작의 흐름

JAVA 애플리케이션 ➡️ JDBC API ➡️ JDBC 드라이버 ➡️ 데이터베이스

 

JAVA 애플리케이션에서 JDBC API를 호출하고 JDBC 드라이버를 사용해서 특정 벤더의 인터페이스에 맞춰서 데이터베이스와 연결해서 사용하게 된다.

 

JDBC 드라이버

  • 데이터베이스와의 통신을 담당하는 인터페이스
  • Oracle, MS SQL, MySQL 등과 같은 데이터베이스에 알맞은 JDBC 드라이버를 구현하여 제공
  • JDBC 드라이버의 구현체를 이용해서 특정 벤더의 데이터베이스에 접근할 수 있음

결국 접속하는 건 드라이버를 통하긴 한다.

1) JDBC 드라이버 로드하기

Class.forName("oracle.jdbc.driver.OracleDriver ");

2) 데이터베이스 연결하기

String jdbc_url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "test";
String password = "test"; 
Connection con = DriverManager.getConnection(jdbc_url, user, password);

3) SQL 명령어를 전송하는 Statement 객체 생성하기

4) SQL 문장 실행하여 ResultSet 타입으로 반환하기

5) 결과 출력하기

 

이렇게 드라이버를 사용해서 연결을 하게 된단다

실무에서는 이거를 한 번만 연결하고 꺼내서 쓰기 때문에 보통 한번 구축 후에는 다시 건드릴일이 별로 없긴 하다.

 

커넥션 객체를 생성하는 과정

  1. 애플리케이션에서 DB 드라이버를 통해 커넥션을 조회한다.
  2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. (3 way handshake와 같은 네트워크 연결 동작 발생)
  3. DB 드라이버는 TCP/IP 커넥션이 연결되면 아이디와 패스워드, 기타 부가 정보를 DB에 전달한다.
  4. DB는 아이디, 패스워드를 통해 내부 인증을 거친 후 내부에 DB를 생성한다.
  5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다.
  6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다.

대충 복잡하고 오래 걸린다는 뜻

이러한 과정을 거쳐서 JAVA 애플리케이션과 DB가 연결되기 때문에 굉장히 번거롭다

그렇기 때문에 우리는 커넥션 풀이라는 걸 만들어서 해결할 수 있다!

 

그렇담 커넥션 풀이란 무엇일까

커넥션들을 담고 있는 풀장 같은 느낌으로 미리 커넥션 객체를 만들어서 보관하고 있다가 애플리케이션에서 요청하면 그때그때 보관하고 있는 커넥션들을 나눠준다는 개념이 되겠다.

 

최근에 회사에서 DB통신문제로 장애가 나서 확인해 본 결과 HikariCP를 사용하고 있었다.

HikariCP는 Spring Boot 2.0 이상에서 사용가능한 Connection Pool로 가벼운 용량과 빠른 속도가 특징이다.

 

그럼 정리

JDBC는 자바 애플리케이션에서 데이터베이스에 접속하기 위한 API로 JDBC 드라이버를 사용해서 데이터베이스에 접속하게 되고 이때 커넥션들을 맺을 때 여러 절차들이 있기 때문에 커넥션 풀이라는 것을 주로 사용한다.

 

급하게 정리하는 이유는 퇴근시간이 가까워졌기 때문

 

출처: https://ittrue.tistory.com/250 [IT is True:티스토리]

반응형