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
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
        • 개념
        • 정보처리기사 필기
        • 정보처리기사 실기 기출
        • 네트워크관리사 2급
        • SQLD
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • 웹
      • git & github
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바