카테고리 없음

9. CRUD와 SQL 쿼리 종합

smallsilver_west 2025. 1. 4. 18:41

9.1 JPA 로깅 설정하기

 

JPA

자바 객체와 관계형 데이터베이스 간의 매핑을 제공하며 SQL을 직접 작성하지 않아도 데이터베이스 작업을 수행할 수 있도록 도와주는 기술

서버에서 데이터 생성, 조회, 수정 등을 요청하면 JPA 리파지토리가 DB에 해당 요청 전달

이떄, DB가 SQL로 쿼리를 작성해 테이블 속 데이터를 관리

 

로깅 레벨 디버그

spring.application.name = firstproject
server.servlet.encoding.force = True
spring.h2.console.enabled = True
spring.jpa.defer-database-initialization = true

logging.level.org.hibernate.SQL = DEBUG

 

로깅

7단계로 구성되어 있으며 출력 레벨을 설정하면 해당 레벨 이상의 로그를 출력

level 1 TRACE DEBUG 레벨보다 더 상세한 정보
level 2 DEBUG 응용 프로그램을 디버깅하는 데 필요한 세부 정보
level 3 INFO 응용 프로그램의 순조로운 진행 정보
level 4 WARN 잠재적으로 유해한 상황 정보
level 5 ERROR 응용 프로그램이 수행할 수 있는 정도의 오류 정보
level 6 FATAL 응용 프로그램이 중단될 만한 심각한 오류 정보
level 7 OFF 로깅 기능 해제

 

SQL 쿼리 줄바꿈

logging.level.org.hibernate.SQL = DEBUG
spring.jpa.properties.hibernate.format_sql = true

 

매개변수 값 확인

logging.level.org.hibernate.type.descriptor.sql.BasicBinder = TRACE

 

고정 JDBC URL 검색

spring.datasource.generate-unique-name = false
spring.datasource.url=jdbc:h2:mem:testdb

 

9.2 SQL 쿼리 로그 확인하기

 

INSERT문

더미 데이터를 생성하는 역할로 데이터 생성 시 사용

INSERT INTO article(id, title, content) VALUES(1, '가가가가', '1111');
INSERT INTO article(id, title, content) VALUES(2, '나나나나', '2222');
INSERT INTO article(id, title, content) VALUES(3, '다다다다', '3333');

 

* 기존 더미 데이터에 이미 id 1이 있는데, DB에 데이터를 생성할 때 id를 1부터 증가하도록 설정하는 경우 중복 발생

 

id 자동 생성 전략

@Id
@GeneratedValue(strategy = (GEnerationType.IDENTITY)
private Long id;
INSERT INTO article(title, content) VALUES('가가가가', '1111');
INSERT INTO article(title, content) VALUES('나나나나', '2222');
INSERT INTO article(title, content) VALUES('다다다다', '3333');

 

SELECT문

데이터를 조회하는 역할

 

UPDATE문

데이터를 수정하는 역할

 

DELETE문

데이터를 삭제하는 역할

 

9.3 기본 SQL 쿼리 작성하기

 

쿼리 기본 형식

CREATE TABLE tablename (attr1 type, attr2 type, attr3 type, PRIMARY KEY (기본키));

 

예제: COFFEE 테이블

//데이터 추가
INSERT INTO coffee (id, name, price) VALUES (1,'아메리카노',4100);

//데이터 조회
SELECT id, name, price FROM coffee WHERE id = 3;

//데이터 수정
UPDATE coffee SET price = 9900 WHERE id = 4;

//데이터 삭제
DELETE FROM coffee WHERE id = 4;