062_JDBC의 기초

Jan 19, 2024
062_JDBC의 기초
 
“JDBC(Java Database Connection)”JAVA와 Database를 연결하는 기본적인 API를 만드는 것이라 판단하면 될듯하다. 이를 바탕으로 어떤 방식으로 JAVA와 DB가 연동되고 흐르는지 파악하는 것을 중점으로 알아가는 것포인트라고 생각하며 봐야 할 것 같다.
 

DBMS (Database Management System, 데이터베이스 관리 시스템)

  • “DB”를 관리하기 위해서는 필수적으로 설치 해야 하는 프로그램이다.
  • DBMS는 “table”과 “HDD”를 관리한다. → HDD에 “DBS(Database System)”라는 공간을 생성하여 DB의 정보를 관리한다.
이때 DBMS가 설치 되기 전 HDD에는 “FS(File System)”이라는 공간이 있는데 DBMS가 설치되면공간의 일부를 분리해서 “DBS”로 만드는 것이다. DBS는 “Table Space” 라고도 부른다. 이때 DBMS와 DBS의 관계에서 “I/O”가 발생한다.

JDBC의 흐름

  • SQL 기반의 데이터베이스와 상호 작용 하도록 설계한다. → 데이터베이스 연결, SQL 문 실행, 결과 검색 등의 기능을 제공 (CRUD)
  • “툴”“DBMS”를 연결 할 때는 리스너가 필요하며 리스너를 통과하기 위해서“IP”, “Port”, “ID”, “PW”, “Protocol” 이 필요하다. → ID, PW가 없을 시 “커넥션 리퓨즈(Connection Refused)”가 발생하고, Protocol이 없을 시 “언노운 프로토콜(Unknown Protocol)”이 발생한다.
리스너와 통신하는 것이 아닌 리스너를 통해 통신을 연결 하는 것이니 이 점을 기억하자! → 리스너는 접근을 계속 확인해야 하므로 “데몬프로세스”이다. 커넥션 리퓨즈 → 인증된 사용자가 아닌 경우에 출력 언노운 프로토콜 → 어떤 프로토콜 통신을 해야 할지 모를 때 출력
  • “툴”과 “DBMS”가 연결에 성공하면 “세션(session)”이 만들어진다. → 세션이 만들어지면 통신 연결에 성공한 것이다.
프로토콜 → 연결의 필수 요소 버퍼 → 통신의 필수 요소 I/O가 없어지면 좋은 알고리즘이다. → 캐싱이 될 시 I/O가 생략된다.

캐싱(Cacsing)

  • “캐싱”메모리에 남아 있는 데이터를 의미한다.
  • 만약 메모리의 공간이 있을 시 HDD에서 필요한 데이터를 가져와 메모리에 저장한다.
  • 만약 메모리의 공간이 없을 시 가장 오랜 된 데이터를 HDD에 기록하고 HDD에서 필요한 데이터를 가져와 메모리에 저장한다.
메모리에 데이터는 자주 사용되는 데이터이다.

그림을 통한 JDBC의 흐름

 
그림을 보고 어떻게 통신이 진행되는지 파악하며 보면 더욱 쉽게 이해가 된다. 혹시라도 이해가 되지 않으면 개인적으로 공부를 더욱 하는 것이 좋을 듯 하다!
 
  • JDBC의 흐름의 가장 기본과 통신의 기본에 대한 설명 그림 → 이 흐름으로 보면 “Request/Response 방식”이다.
    • notion image
  • JDBC의 흐름을 추상화 시켜 표현하고 JAVA와 DBMS가 연결되고 진행되는 과정을 표현한 그림
    • notion image
      👉
      붉은 동그라미 숫자에 따른 진행이다. → “클라이언트와 DBMS는 이미 연결 되었다”는 가정 하의 순서이다. → 참고로 연결 시 IP, Port, ID, PW, Protocol이 필요한 것은 반드시 기억하자! 1. 클라이언트가 필요한 데이터를 보낸다. 2. 소켓에서 읽는다. 3. 데이터를 파싱 한다. 4. 캐싱 데이터를 확인한다. 5. 캐싱이 안될 시 HDD로 이동하여 DBS를 확인한다. 6. 찾은 데이터를 RAM으로 끌어올린다. → 이때 캐싱된다. 7. 필요한 데이터를 보낸다. 8. 클라이언트가 데이터를 읽는다. 그림에는 없지만 자바로 데이터가 옮겨질 시 “파싱”을 진행하여 “자바 오브젝트”에 넣어야 한다. 스트림으로 받는건 파싱했다고 하지않는다. class로 받아야한다. → 다 다른 타입을 담을 수 있는 것이 class이기 때문이다.

 
Share article
RSSPowered by inblog