[내일배움캠프 Spring 4기] 63일차 TIL - JDBC | Docker

서예진·2024년 3월 4일
0

오늘의 학습키워드 💻

▸ JDBC
▸ Docker


✅ JDBC

JDBC(Java Database Connectivity)

  • Java 앱과 DB를 연결시켜주기 위해 만들어진 기술
  • JPA도 이 기술을 사용하여 구현되어 있다.

JDBC Driver

  • JDBC Driver는 여러 타입의 DB와 연결할 수 있는 기능을 제공한다.
  • Java 앱(Application)이 있다고 했을 때, JDBC API를 통해서 Application을 DB와 연결을 요청하게 된다. -> JDBC Driver Manager가 각각의 DB에 맞는 Driver를 가지고 있다.
  • Driver : 연결 정보를 포함해서 여러가지 DB 커넥션을 생성하고 쿼리를 발송하고 응답값을 수신하는 인터페이스라고 생각하면 된다.
  • JDBC Driver Manager 는 런타임 시점에
    - Connection(연결) 을 생성하여 쿼리를 요청할 수 있는 상태를 만들어주고
    - Statement(상태) 를 생성하여 쿼리를 요청하게 해주고
    - ResultSet(결과셋) 을 생성해 쿼리 결과를 받아올 수 있게 해준다.
    - 🚫 꼭 사용후에는 각각 close() 를 호출해서 자원 해제를 시켜줘야 한다 🚫
  1. DriverManager가 getConnection() → connection 생성
  2. createStatement()를 실행 → statement 생성
  3. 그 상태에서 select 쿼리를 날릴 때 executeQuery()를 날림 → DB에서 Driver가 데이터를 조회해서 응답하게 됨
  4. 그 응답값을 가지고 실제 statement에서 값을 조회할 수 있게 됨

✅ Docker

Docker 란?

  • Docker는 애플리케이션을 컨테이너로 패키징하여 구축, 테스트 및 배포할 수 있는 플랫폼이다.
  • 다시말해, Docker는 컨테이너 기반의 오픈소스 가상황 플랫폼이다.
  • 컨테이너를 만들 때 도커 이미지를 가지고 도커 컨테이너라는 것을 생성한다.
  • 컨테이너는 소프트웨어를 실행할 수 있는 표준화된 유닛으로, 애플리케이션과 해당 종속성을 포함하여 격리된 환경에서 실행된다.
  • 컨테이너 하나하나가 애플리케이션 실행과 관련해서 격리를 제공한다.
  • 여기서 컨테이너는 웹서버, 데이터베이스 등이 될 수 있다.

Docker가 필요한 이유

  • Docker가 필요한 이유는 다음과 같다.
    • 환경 일관성: 도커는 애플리케이션을 컨테이너로 패키징하므로, 어떤 환경에서도 일관되게 실행될 수 있다.
    • 리소스 효율성: 가상화된 컨테이너는 가볍고 빠르게 생성되며, 더 많은 애플리케이션을 단일 호스트에서 실행할 수 있다.
    • 개발 및 배포 단순화: 컨테이너는 개발 환경을 빠르게 설정하고, 애플리케이션을 쉽게 배포할 수 있도록 도와준다.

Docker 준비

  • 인텔리제이 Terminal에서 "docker" 입력 -> 입력했을 때 docker 관련 명령어가 뜬다면 docker가 백그라운드에서 실행중이라는 의미이다.
  • 만약 뜨지 않는다면, 인텔리제이 껐다 다시 켜야한다.
  • 아래 코드를 인텔리제이 Terminal에 순서대로 입력한다.
	// docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER={이름 ex. yejin} -e POSTGRES_DB=messenger --name postgres_boot -d postgres

    // docker exec -i -t postgres_boot bash
    // su - postgres
    // psql --username teasun --dbname messenger
    // \list (데이터 베이스 조회)
    // \dt (테이블 조회)
profile
안녕하세요

0개의 댓글