[스프링부트3 백엔드 개발자 되기] part 5

CodeKong의 기술 블로그·2023년 11월 8일
1

SPRING BOOT

목록 보기
16/24
post-thumbnail

📌 학습목표

SQL을 몰라도 데이터베이스를 조작할 수 있게 해주는 편리한 도구인 ORM을 공부하겠습니다.
ORM 기술 표준인 스프링 JPA와 이를 구현하기 위한 하이버네이트를 사용합니다.


💡 데이터베이스

데이터베이스란?

✅ 데이터를 매우 효율적으로 보관하고 꺼내 볼 수 있는 곳
✅ 굉장히 많은 사람이 데이터를 사용하고, 관리할 수 있다.

데이터베이스 관리자, DBMS

✅ 데이터베이스를 관리하기 위한 소프트웨어

✅ MySQL, 오라클 등이 있다.

관계형 DBMS

given-when-then은 테스트를 세 부분으로 나눕니다.

회원 테이블
ID이메일나이
1a@test.com10
2b@test.com20
2c@test.com30

H2, MySQL

✅ H2 -> 자바로 작성되어있는 RDBMS
✅ 스프링 부트가 지원하는 인메모리 관계형 데이터베이스

✅ MySQL -> 실제 서비스에 사용

꼭 알아야 할 데이터 베이스 용어

  1. 테이블 : 데이터베이스에서 데이터를 구성하기 위한 가장 기본 단위
  2. 행 : 테이블의 가롤로 배열된 데이터의 집합
  3. 열 : 행에 저장되는 유형의 데이터
  4. 기본 키 : 행을 구별할 수 있는 식별자
  5. 쿼리 : 데이터베이스에서 데이터를 조회하거나 삭제 같은 처리를 하기위해 사용하는 명령문

💡ORM이란?

✅ ORM은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법

int age = 20;
String name = "홍길동";

RDB

agename
20홍길동

으로 바뀐다


💡JPA와 하이버네이트?

✅ ORM에도 여러 종류가 있는데 자바에서는 JPA를 표준으로 사용한다
✅ JPA는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
✅ 실제 사용을 위해 구현체인 하이버네이트를 사용한다.

엔티티 매니저란?

✅ 엔티티

데이터베이스의 테이블과 매핑되는 객체

✅ 엔티티 매니저

엔티티를 관리해 데이터베이스와 어플리케이션 사이에서 객체를 생성, 수정, 삭제하는 드으이 역할을 한다.

@PersistenceContext
EntityManager em; //프록시 엔티티 매니저, 필요할 때 진짜 엔티티 매니저 호출

영속성 컨텍스트란?

엔티티를 관리하는 가상의 공간

✅ 1차 캐시

✅ 쓰기 지연

✅ 변경 감지

✅ 지연 로딩

엔티티의 상태

엔티티는 4가지의 상태를 가진다

  1. 분리 : 영속성 컨텍스트가 관리하고 있지 않음
  2. 관리 : 영속성 컨텍스트가 관리
  3. 비영속 : 영속성 컨텍스트와 관련이 없음
  4. 삭제

💡 스프링 데이터와 스프링 데이터 JPA

스프링 데이터 JPA란?

스프링 데이터 JPA는 스프링 데이터의 공통적인 기능에서 JPA의 유용한 기술이 추가된 기술

스프링 데이터 JPA에서 제공하는 메서드

✅ .save()

✅ .findById(id)

✅ .findAll()

✅ .deleteById(id)


💡 핵심요약

✅ ORM은 객체와 데이터베이스를 연결하는 프로그래밍 기법
✅ JPA는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
✅ 하이버 네이트는 JPA의 구현체 중 대표적
✅ 스프링 데이터 JPA는 JPA를 쓰기 편하게 만들어 놓은 모듈

0개의 댓글