BE/스프링 부트 3

9장 CRUD와 SQL 쿼리 종합

이제하네 2023. 12. 6. 12:00

JPA 로깅 설정하기

서버에서 데이터의 생성,조회,수정,삭제등을 요청하면 JPA 리파지터리가 DB에 해당 요청을 전달하면 요청을 받은 DB는 자신의 언어 (SQL)로 쿼리를 작성해 테이블 속 데이터를 관리

※쿼리(Query)란 DB에 정보를 요청하는 구문을 지칭 데이터의 생성은 INSERT문 ,  조회는 SELECT문, 수정은 UPDATE문 , 삭제는 DELETE문을 사용

  • 쿼리를 분석하기 위해 JPA 로깅 설정 을 하기위해 application.properties 파일에 logging.level.org.hibernate.SQL=DEBUG 추가
    • 로깅 레벨의 7단계
      1. TRACE(레벨1): DEBUG 레벨보다 더 상세한 정보
      2. DEBUG(레벨2): 응용 프로그램을 디버깅하는 데 필요한 세부 정보
      3. INFO(레벨3): 응용 프로그램의 순조로운 진행 정보
      4. WARN(레벨4): 잠재적으로 유해한 상황 정보
      5. ERROR(레벨5): 응용 프로그램이 수행할 수 있는 정도의 오류 정보
      6. FATAL(레벨6): 응용 프로그램이 중단될 만한 심각한 오류 정보
      7. OFF(레벨7): 로깅 기능 해제
  • 쿼리들이 한 줄로 나와 한눈에 보기 어렵기 때문에 정렬하기 위해 application.properties 파일에 spring.jpa.properties.hibernate.format_sql=true 코드 추가
  • JPA 쿼리에서 DB에서 넘어가는 매개변수 값을 확인하기위해 logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 코드 추가 
  • H2 DB에 접속할때 매번JDBC URL 을 새로 검색하였는데 고정시키기 위해
    유니크 URL 생성하지 않기 위해 spring.datasource.generate-unique-name=false 코드 추가 고정 URL 설정하기하기위해 spring.datasource.url=jdbc:h2:mem:testdb 코드 추가 

 

SQL 쿼리 로그 확인하기

  • 데이터 생성 시 : INSERT 문
    • id 자동 생성 전략 추가하기
      1. entity패키지 아래에 있는 Article파일에 @GeneratedValue 어노테이션에서 괄호를 열고 strategy = GenerationType.IDENTITY를 입력한 후 괄호닫기. 이렇게 하면 데이터를 생성할 때마다 DB가 알아서 ID값을 넣어줌
  • 데이터 조회 시 : SELECT 문
    • SELECT 문은 조회할 속성 여기서는 id, content. title이고 FROM절에는 조회할 테이블 명인 article 로 입력됨
  • 데이터 수정 시 : UPDATE 문
    • WHERE 절에 id를 입력함 
  • 데이터 삭제 시 : DELETE 문
    • 이번에는 WHERE절에 id값으로 지움 

DB가 알아서 ID값 증가
INSERT 문 할때 생성되는 쿼리문
SELECT 문 할떄 생성되는 쿼리문
UPDATE 문 할 때 생성되는 쿼리문
DELETE 문 할 때 생성되는 쿼리문

 

 

기본 SQL 쿼리 작성하기

  • COFFEE 테이블 만들기
    •  entity 패키지 안에 Article파일을 보면 코드 윗부분에 @Entity가 있어 이 클래스를 테이블로 만들고 속성으로는 private 로 설정 되어있는 변수들이 들어가있다.
    • CREATE TABLE 문 형식
      • SQL 문은 항상 마지막에 세미콜론(;)을 붙혀야 한다.

Article파일의 @Entity에서 스프링 부트가 자동으로 만든 CREATE TABLE 문

CREATE TABLE 테이블명 (
    속성명1 자료형,
    속성명2 자료형,
    속성명3 자료형,
    PRIMARY KEY (기본키)
);

H2 에 테이블 생성

 

  • COFFEE 데이터 생성하기
    • INSERT 문을 사용해서 COFFEE 테이블에 데이터 생성
      • 데이터를 여러개 넣을때는 쉼(,)을 사용해서 만듬

COFFEE 테이블에 데이터 하나 넣기
COFFEE 테이블에 데이터 여러개 넣기

 

  • COFFEE 데이터 조회하기
    • SELECT 문을 사용해서 조회하기
      • 조건절 (WHERE) 이 없으면 전체 조회 조건이 있으면 그 조건에 맞는 데이터만 조회 

SELECT문에 조건에 맞는 데이터만 출력
조건을 안주고 전체 검색 테이블의 모든 데이터를 출력

 

  • COFFEE 데이터 수정하기
    • UPDATE 문을 사용해서 데이터 수정
    • UPDATE 문을 사용할때는 조건(WHERE)이 없으면 테이블 안에 모든 ROW가 수정됨

UPDATE 문 실행
ID가 4인 row 에 데이터가 변함

 

  • COFFEE 데이터 삭제하기
    • DELETE 문을 사용하여 데이터 삭제
    • DELETE 문도 조건을 사용해서 삭제 조건이 없으면 테이블 모든 ROW 가 삭제됨

DELETE 문을 사용해서 데이터 한개 지움
테이블을 조회해보면 ID가 4인 ROW만 지워짐

'BE > 스프링 부트 3' 카테고리의 다른 글

11장 REST API의 동작 이해하기  (0) 2023.12.13
10장 REST API 와 JSON  (0) 2023.12.10
8장 게시글 삭제하기: Delete  (2) 2023.12.02
7장 게시판 수정하기 :Update  (0) 2023.11.29
6장 게시판 내 페이지 이동하기  (0) 2023.11.24