본문 바로가기
👨‍🏫Study/JAVA

[Database] JDBC

by 코푸는 개발자 2022. 4. 14.
728x90

JDBC란?

자바에서  DB 프로그래밍을 하기 위해 사용되는 API

*데이터베이스 종류에 상관없다.

*JDBC 드라이버 : 각 DBMS에 알맞는 클라이언트

 

JDBC(Java Database Connectivity)

  • 자바 프로그램 내에서 DB와 관련된 작업을 처리할 수 있도록 도와주는 일을 한다.
  • java에서 DB를 사용할 때에는 JDBC API를 이용하여 프로그래밍한다.
  • 자바는 DBMS종류에 상관없이 하나의 JDBC를 사용하여 DB작업을 처리할 수 있기 때문에 알아두면 어떤 DBMS든 작업을 처리 할 수 있게 된다.

 

JDBC API가 생긴 이유

JDBC API가 없었던 옛날에는 각각의 데이터베이스마다(ms-sql, my-sql, oracle..) 각각의 SQL문을 사용한다.

그래서 DB의 종류에 따라 SQL문의 작성 방법이 너무나 차이가 나서 개발자들의 항의가 많았다.

그러다가 더 이상 무한 경쟁을 하지말고 메서드나 일부 용어를 통일하여 회사간 협의가 이루어진다. 

그 결과로 function이나 structure, 전역변수 등을 통합하여 문법으로 통일시켰고, 그 통일시킨것이 바로 JDBC API

즉, JDBC API를 사용할 경우 DBMS에 알맞는  JDBC드라이버만 있다면 어떤 DB라도 사용 가능하다.

현재 Oracle, MySQL, MS-SQL등 주요 DBMS가 자신에 알맞는 JDBC드라이버를 제공하기 때문에 문제없이 DB를 사용 가능하다.

 

 

자바에서 JDBC코딩하는 대략적인 순서

  1. JDBC드라이버를 로딩시킨다.
  2. DirverManager, getConnection을 통해 DB connection을 구현한다.
  3. Query실행을 하기 위해서 Statement 객체를 생성한다.
  4. Query를 실행한다.
  5. Query실행 결과 사용
  6. Statement 종료
  7. 데이터베이스 커넥션 종료

 

JDBC 시스템 아키텍처(System Architecture)

JDBC API는 2-tier(2 계층)와 3-tier(3 계층)를 모두 지원한다.

 

tier

tier란 일련의 유사한 객체가 나열된 상태에서 계층 또는 열을 나타낸다. 프로그램의 일부가 여러 객체에 나뉘어 존재할 수 있으며 그 계층 또한 네트워크 상에서 다른 컴퓨터에 위치할 수 있다.

 

  • 2-tier
    • 자바 애플릿이나 애플리케이션이 JDBC를 이용하여 DBMS에 직접 접근하는 방식이다.
    • 가장 대표적인 C/S (Client/Server) 구조이다.
    • 프로그래밍이 간단하다는 장점이 있다.
    • 하지만 보안, 로드밸런싱(서버 부하 분담), 확장성(오브젝트 재사용) 등의 문제점이 있다.

2-tier가 적합한 경우는 다음과 같다.

- 애플리케이션의 하나의 데이터베이스만을 사용하는 경우
- 데이터베이스 엔진이 하나의 CPU에서 동작하는 경우
- 데이터베이스가 계속 거의 같은 크기로 유지되는 경우 
- 사용자 기반이 같은 크기로 유지되는 겨우
- 요구가 확정되어, 변환 가능성이 극히 적거나 없는 경우
- 애플리케이션을 종료한 후에도 최소한의 지속성을 요구하는 경우

 

  • 3-tier
    • 자바 애플릿이나 어플리케이션이 DBMS에 직접 접근하지 않고 중간에 미들웨어(미들티어)를 거쳐서 데이터베이스에 접근하는 방식이다.
    • 데이터베이스와 연동 부분을 분리시킴으로써 Presentation Layer가 데이터 저장 방법에 신경을 쓰지 않아도 된다.
    • 클라이언트는 단지 미들티어만을 참조한다. 
    • 미들티어 서버는 DBMS와 같이 특정한 작업만 수행하는 최종 서버와 통신을 하여 결과를 얻은 후 이 결과를 클라이언트에 전달한다.
    • 2-tier 모델과 비교했을때 훨씬 안정적이고 유연하며 보안이 강화된다. 

다음 그림은 2-tier와 3-tier를 표현한 것이다. 왼쪽부터 1-tier로 시작하여 오른쪽으로 갈수록 한 계층씩 증가한다.

 

3-tier 아키텍처 같은 경우에는 중간 2-tier에 http, 코바(CORBA) 등을 지원하기 위한 응용 처리 서버(Application Server)가 온다. 

728x90

'👨‍🏫Study > JAVA' 카테고리의 다른 글

[JAVA] Garbage Collector  (0) 2022.04.19
[JAVA] EJB(Enterprise JavaBeans)  (0) 2022.04.15
[JAVA] Servlet(서블릿), JSP(Java Server Page)  (0) 2022.04.14
[JAVA] Java EE  (0) 2022.04.11
[JAVA] 19. NIO 기반 입출력 및 네트워킹(6)  (0) 2022.04.06

댓글