본문 바로가기

Back-end/Spring boot

[Spring boot] 9일차_CRUD와 SQL 쿼리 종합

쿼리 : DB에 정보를 요청하는 구문.(INSERT,SELECT,UPDATE,DELETE)

 

로깅 : 시스템이 작동할 때 당시의 상태와 작동 정보를 기록하는 것

로깅 레벨

TRACE(레벨1) : DEBUG 레벨보다 더 상세한 정보

DEBUG(레벨2) : 응용 프로그램을 디버깅하는 데 필요한 세부 정보

INFO(레벨3) : 응용 프로그램의 순조로운 진행 정보

WARNING(레벨4) : 잠재적으로 유해한 상황 정보

ERROR(레벨5) : 응용 프로그램이 수행할 수 있는 정도의 오류 정보

FATAL(레벨6) : 응용 프로그램이 중단될 만한 심각한 오류 정보

OFF(레벨7) : 로깅 기능 해제

 

(INFO로 설정하면 레벨3~7의 모든 로그 기록됨)

# JPA 로깅 설정
# 디버그 레벨로 쿼리 출력
logging.level.org.hibernate.SQL=DEBUG
# 쿼리 줄바꿈하기
spring.jpa.properties.hibernate.format_sql=true
# 매개변수 값 보여 주기
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

# DB URL 설정
# 유니크 URL 생성하지 않기
spring.datasource.generate-unique-name=false
# 고정 URL 설정하기
spring.datasource.url=jdbc:h2:mem:testdb

 

 

데이터 생성 시 Unique index or primary key violation 에러 발생

: 더미데이터에서 작성한 INSERT문에서 id=1,2,3 데이터를 추가했음. 또한 Article.java에서 @GeneratedValue를 통해 DB에 데이터를 생성하면서 id를 1부터 증가하도록 하게 함-> 중복 발생 -> @GeneratedValue(strategy=GenerationType.IDENTITY를 통해 DB가 id를 자동 생성하게 함. data.sql에서 id속성과 속성값 삭제하기->중복해결

 

!!!!@GeneratedValue(strategy=GenerationType.IDENTITY)로 DB에서 id 자동 생성하는 작업을 Article 엔티티뿐만 아니라 Member 엔티티에서도 같이 해줘야 오류가 발생하지 않는다. (data.sql에서 데이터 더미만들 때 Article이랑 Member 둘다 만들었어서!!)

 

테이블 생성

쿼리 동작 확인하기

새 글 작성 후 Submit(데이터 생성) -> 상세페이지 조회로 연결(데이터 조회)

새 글 작성 데이터 생성 확인&단일데이터 조회

insert(데이터 생성)

- id에 default적혀있음 확인(DB가 id 알아서 생성)

- content, title에 ?들어있음. 다음 줄에 생성된 Article에서 title=라라라라, content=4444 확인 가능

?란 JPA에서 DB로 전달하는 매개변

 

select(데이터 조회)

- 상세 페이지 조회(단일 데이터 조회)

WHERE절에서 id가 ?인 데이터를 가져오라고 되어 있음. 이때 ?의 값은 로그에서 id=4임을 확인할 수 있음. 즉, id가 4번인 데이터 조회

 

전체 데이터 조회

- 목록 페이지 조회(전체 데이터 조회)

select절 : 조회할 속성(id, content, title)

from절 : 조회할 테이블 명(article)

 

update(데이터 수정)

id=2 데이터 수정

 

delete(데이터 삭제)

id=2 데이터 삭제

 

 

DB에서 직접 쿼리 작성
스프링 JPA. https://me-analyzingdata.tistory.com/entry/Spring-JPA-ORM%EA%B3%BC-JPA참고.

 

 

셀프체크