20_데이터베이스 입출력

Tasker_Jang·2024년 4월 1일
0

20_데이터베이스 입출력

1. JDBC

자바는 데이터베이스와의 연결 및 데이터 입출력 작업을 수행하기 위해 JDBC(Java Database Connectivity) 라이브러리를 제공합니다. JDBC는 자바 애플리케이션과 데이터베이스 간의 표준 인터페이스를 제공하여 데이터베이스에 쉽게 접근하고 관리할 수 있도록 돕습니다.

JDBC를 사용하면 다음과 같은 작업을 수행할 수 있습니다:

  1. 데이터베이스 연결 (Database Connection):

    • JDBC를 사용하여 자바 애플리케이션과 데이터베이스 사이에 연결을 설정할 수 있습니다.
  2. SQL 쿼리 실행 (Executing SQL Queries):

    • JDBC를 사용하여 SQL 쿼리를 데이터베이스에 전송하여 데이터를 조회, 추가, 수정, 삭제할 수 있습니다.
  3. 트랜잭션 관리 (Transaction Management):

    • JDBC를 사용하여 트랜잭션을 시작, 커밋, 롤백할 수 있으며, 데이터베이스의 일관성과 무결성을 유지할 수 있습니다.
  4. 메타데이터 조회 (Querying Metadata):

    • JDBC를 사용하여 데이터베이스의 테이블, 컬럼, 인덱스 등의 메타데이터를 조회할 수 있습니다.
  5. 배치 처리 (Batch Processing):

    • JDBC를 사용하여 대량의 데이터를 한 번에 처리할 수 있는 배치 작업을 수행할 수 있습니다.
  6. 저장 프로시저 및 함수 호출 (Calling Stored Procedures and Functions):

    • JDBC를 사용하여 데이터베이스에 저장된 프로시저나 함수를 호출할 수 있습니다.

JDBC는 자바 표준 API로 제공되므로, 대부분의 데이터베이스 관리 시스템(DBMS)과 호환됩니다. 따라서 JDBC를 사용하면 다양한 데이터베이스에 대한 액세스를 표준화된 방식으로 처리할 수 있습니다.

2. 트랜잭션

트랜잭션은 데이터베이스에서 한 번에 수행되어야 하는 연산들의 논리적인 단위를 말합니다. 이것은 데이터베이스 관리 시스템(DBMS)에서 일반적으로 지원하는 개념으로, 데이터베이스의 일관성과 무결성을 보장하기 위해 사용됩니다. 트랜잭션은 다음과 같은 특징을 가집니다:

  1. 원자성 (Atomicity): 트랜잭션은 원자적(Atomic)으로 간주되어야 합니다. 이는 트랜잭션 내의 모든 연산이 하나의 단위로 동작하고, 모든 연산이 성공하거나 실패할 경우 모두 롤백되어야 함을 의미합니다. 다시 말해, 트랜잭션은 전체적으로 성공하거나 전체적으로 실패해야 합니다.

  2. 일관성 (Consistency): 트랜잭션 전후에 데이터베이스는 일관된 상태여야 합니다. 트랜잭션이 실행되기 전과 후에 데이터베이스의 일관성이 유지되어야 합니다.

  3. 격리성 (Isolation): 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 합니다. 이는 각 트랜잭션이 서로의 연산에 영향을 주지 않고 독립적으로 실행되어야 함을 의미합니다.

  4. 지속성 (Durability): 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 유지되어야 합니다. 즉, 데이터베이스의 변경은 영구적으로 저장되어야 하며, 시스템 장애 또는 중단 시에도 유지되어야 합니다.

트랜잭션은 데이터베이스에서 데이터의 무결성과 일관성을 유지하고 동시성 제어를 보장하는 데 중요한 역할을 합니다. 따라서 데이터베이스에서 여러 연산을 하나의 단위로 묶어 트랜잭션으로 처리함으로써 데이터베이스의 안전성을 보장할 수 있습니다.

3. 커넥션 풀

다수의 클라이언트 요청을 처리하는 서버 프로그램은 일반적으로 커넥션 풀(Connection Pool)을 사용하여 효율적으로 데이터베이스 연결을 관리합니다. 커넥션 풀은 다음과 같은 방식으로 동작합니다:

미리 생성된 Connection: 커넥션 풀은 초기화 단계에서 일정량의 데이터베이스 연결을 미리 생성하고 풀(pool)에 저장합니다. 이는 데이터베이스 서버와의 연결 설정에 드는 비용을 줄이고, 연결을 필요할 때마다 새로운 연결을 만드는 오버헤드를 피하기 위함입니다.

요청에 따른 Connection 제공: 클라이언트 요청이 도착하면, 서버는 커넥션 풀에서 Connection을 가져와서 요청을 처리하는 데 사용합니다. 이때 가져온 Connection은 풀에서 제거됩니다.

연결 반환: 요청 처리가 완료되면, 사용한 Connection은 다시 커넥션 풀에 반환됩니다. 이는 해당 연결을 다시 재사용할 수 있도록 하고, 연결을 새로 만들 필요를 없애서 성능을 향상시킵니다.

profile
터널을 지나고 있을 뿐, 길은 여전히 열려 있다.

0개의 댓글