inblog logo
|
chodong
    java

    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

    chodong

    RSS·Powered by Inblog