Mission
데이터 CRUD 과정의 SQL 쿼리를 분석하시오
JPA 의 Repository를 통해서 손쉽게 데이터를 관리할 수 있었다.
Repository가 요청을 보내면 DB는 자신의 언어 SQL 쿼리문을 통해 데이터를 테이블에 관리한 것이다.
1. JPA 로깅 설정
# 09강: h2 DB, 웹 콘솔 설정
spring.h2.console.enabled=true
# 15강: data.sql 적용을 위한 설정(스프링부트 2.5 이상)
spring.jpa.defer-datasource-initialization=true
# 17강: JPA 로깅 설정
## 디버그 레벨로 쿼리 출력
logging.level.org.hibernate.SQL=DEBUG
## 이쁘게 보여주기
spring.jpa.properties.hibernate.format_sql=true
## 파라미터 보여주기
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
## 고정 url 설정
spring.datasource.url=jdbc:h2:mem:testdb
2. SQL 쿼리 로크 확인
crud 동작으로 인한 sql 쿼리를 확인해보자
3.ID 자동 생성 전략
게시물을 생성하면 데이터 id 중복 에러가 나는데 데이터의 대표값은 겹치면 안된다.
entity/ Article
@GeneratedValue(strategy = GenerationType.IDENTITY) // DB가 id를 자동 생성 어노테이션!
4. 생성(INSERT) 쿼리
create과정에 어떤 sql이 동작했는지 확인
INSERT INTO ARTICLE (id, content, title)
VALUES(id, content, title)
5.조회(SELECT) 쿼리
6.갱신(UPDATE) 쿼리
UPDATE ARTICLE
SET
CONTENT =
TITLE =
WHERE ID = 4;
7. 삭제(DELETE) 쿼리
DELETE FROM ARTICLE WHERE ID = 3;
요약
로깅 설정은 application.properties에서
데이터가 추가될 때 id 값이 중복되면 안된다 그렇게 해주기 위해 ->
@GeneratedValue(strategy = GenerationType.IDENTITY) // DB가 id를 자동 생성 어노테이션!
- -기본 SQL 쿼리 연습
0. 커피 테이블 삭제
drop table coffee;
select * from coffee;
1. 커피 테이블 만들기
create table coffee (
id bigint generated by default as identity,
name varchar(255),
price varchar(255),
primary key (id)
)
2. 커피 데이터 생성
insert
into
coffee
(id, name, price)
values
(1, '아메리카노', 4100)
insert
into
coffee
(id, name, price)
values
(2, '라떼', 4600 ),
(3, '모카', 5100 ),
(4, '오늘의 커피', 3800 );
3.커피 데이터 조회 read
select
id ,name, price
from coffee
where
id = 3;
4.커피 데이터 갱신 update
update
coffee
set
price = 9900
where
id=4;
5.커피 데이터 삭제 delete
delete
from
coffee
where
id = 4;
🔥 구글링 훈련하기
- JPA 쿼리 로그
- JPA GeneratedValue IDENTITY
- SQL CREATE TABLE
- SQL UPDATE
- SQL DELETE
- SQL WHERE 사용법
내용참고
https://www.youtube.com/channel/UCpW1MaTjw4X-2Y6MwAVptcQ
'Spring Boot > Spring Boot 입문 홍팍' 카테고리의 다른 글
[Spring boot] (19) Rest Controller와 HTTP (0) | 2023.08.09 |
---|---|
[Spring boot] (18) Rest API 와 JSON (0) | 2023.08.08 |
[Spring boot] (16) 데이터 삭제하기 (DB까지) (0) | 2023.08.08 |
[Spring boot] (15) 데이터 수정하기 (DB까지) (0) | 2023.08.07 |
[Spring boot] (14) 수정 폼 만들기 (0) | 2023.08.07 |