JPA - 데이터베이스와 SQL

2024. 9. 26. 19:26·Java & Spring/Spring

□ 데이터베이스(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 : 비정상 종료 시 부분 연산된 트랜잭션 결과를 취소

 

 

'Java & Spring > Spring' 카테고리의 다른 글

JPA - JPQL사용해보기  (2) 2024.10.02
JPA - 쿼리 파일 만들기  (2) 2024.09.27
테스트코드 작성에 사용되는 메서드 및 애노테이션(1)  (0) 2024.09.23
47일차 - Controller 테스트  (0) 2024.09.11
46일차 - 테스트 코드 애노테이션  (2) 2024.09.10
'Java & Spring/Spring' 카테고리의 다른 글
  • JPA - JPQL사용해보기
  • JPA - 쿼리 파일 만들기
  • 테스트코드 작성에 사용되는 메서드 및 애노테이션(1)
  • 47일차 - Controller 테스트
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부 N
        • 자격증 N
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java 생성자
    프로그래머스 java 기초 트레이닝
    java 제어자
    java 멤버
    java arrays.copyofrnage()
    java super
    Java this
    java two-pointer
    데이터 크기
    java 메서드
    자료구조
    개발로드맵
    java 세수의합
    java enhance switch
    java기초
    java
    java 유클리드 호제법
    데이터 타입
    java 에라토스테네스의 체
    프로그래머스 java 기초트레이닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
JPA - 데이터베이스와 SQL
상단으로

티스토리툴바