Java & Spring/Spring

JPA - 데이터베이스와 SQL

DJ.Kang 2024. 9. 26. 19:26

□ 데이터베이스(H2)

- DB(H2) 사용 방식 3가지

  • Server Mode
    • 직접 엔진을 설치하여 사용하는 방식.
    • 애플리케이션과 상관 없는 외부에서 DB 엔진이 구동된다.
    • 데이터가 애플리케이션 외부에 저장되므로 애플리케이션을 종료해도 데이터가 사라지지 않는다.
  • In-memory Mode
    • 엔진을 설치하지 않고 애플리케이션 내부의 엔진을 사용하는 방식.
      • build.gradle 및 application.properties 설정을 통해 실행 가능하다.
    • 애플리케이션을 실행하면 DB 엔진이 함께 실행되고 애플리케이션을 종료하면 DB 엔진이 함께 종료된다.
    • 데이터가 애플리케이션의 메모리에 저장되기 때문에 애플리케이션을 종료하면 데이터가 사라진다.
  • Embedded Mode
    • 엔진을 설치하지 않고 애플리케이션 내부의 엔진을 사용하는 방식.
      • build.gradle 및 application.properties 설정을 통해 실행 가능하다.
    • 애플리케이션을 실행하면 DB 엔진이 함께 실행되고 애플리케이션을 종료하면 DB 엔진이 함께 종료된다.
    • 데이터가 애플리케이션 외부에 저장되므로 애플리케이션을 종료해도 데이터가 사라지지 않는다.
Mode  H2 다운로드 여부 실행 주체  DB 저장 위치  사용 용도
Server Mode O 외부 로컬(파일 시스템) 배포 용도
In-Memory Mode X 스프링 메모리 테스트 용도
Embedded Mode X 스프링 로컬(파일 시스템) 개발 용도

 

 

□ 데이터베이스 다루기(SQL)

  • 데이터 조리 시작(DDL)
    1. CREATE TABLE : 새로운 테이블 생성
    2. ALTER TABLE : 테이블 개조
    3. DROP TABLE : 테이블 제거
  • 데이터 찾기(DML)
    1. SELECT : 데이터 선택
    2. WHERE : 데이터 조건 걸기
    3. ORDER BY : 데이터 정렬
    4. GROUP BY : 데이터 그룹화
    5. JOIN : 데이터 합치기
  • 데이터 개조 및 제거(DML)
    1. INSERT INTO : 새로운 데이터 추가
    2. UPDATE : 기존의 데이터 새로 고침
    3. DELETE FROM : 불필요한 데이터 제거

 

□ 트랜잭션

데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위

트랜잭션중에 문제가 발생하면 그전에 했던 변경을 아무일 없었던것처럼 모두 되돌림

 

▷ 트랜잭션의 특징(원자성, 일관성, 독립성)

  1. 원자성(All or Nothing)
    • 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다.
    • 트랜잭션은 사람이 설계한 논리적인 작업 단위로서, 일처리는 작업단위 별로 이루어 져야 사람이 다루는데 문제가 없다.
    • 만약 트랜잭션 단위로 데이터가 처리되지 안흥면, 설계한 사람은 데이터 처리 시스템을 이해하기 힘들 뿐만 아니라, 오작동 시 원인을 찾기가 어려워진다.
  2. 일관성(Keeps Data Correct)
    • 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.
    • 트랜잭션이 진행되는 동안에 데이터베이스가 변경되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는것이 아니라, 처음 트랜잭션을 진행하기 위해 참조된 데이터베이스로 진행된다.
    • 이렇게 함으로써 각 사용자는 일관성 있는 데이터를 볼 수 있다.
  3. 독립성(Independent)
    • 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점을 가리킨다.

▷ 트랜잭션 관리와 보안(DCL)

  1. BIGIN : 트랜잭션 시작
  2. COMMIT : 트랜잭션 정상 종료
  3. ROLLBACK : 비정상 종료 시 부분 연산된 트랜잭션 결과를 취소