본문 바로가기

JPA8

JPA Auditing으로 생성시간, 수정시간 자동화하기 실무에서 데이터의 생성 시간과 수정 시간이 모든 테이블에 필수적으로 존재해야 한다. 하지만 개발할때 무언가를 생성하거나 수정할때마다 이 컬럼들을 신경쓰는 것은 매우 귀찮은 일이다. JPA Auditing을 사용하면 생성 시간과 수정 시간을 자동화 할 수 있다. BaseTimeEntity 생성 package com.usedcar.admin.domain; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEn.. 2021. 5. 12.
H2 쿼리 문법을 MySQL 쿼리 문법으로 변경하여 로그 출력하기 아무 설정도 하지 않은 상태에서의 테이블 생성 쿼리 로그를 보면 H2 문법이 적용되어 있다. create table car ( car_id bigint generated by default as identity, car_number varchar(255), category varchar(255), color varchar(255), model varchar(255), production_year varchar(255), purchase_date timestamp, vin varchar(255), primary key (car_id) ) application.properties에 코드 추가 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MyS.. 2021. 5. 12.
쿼리 로그 세팅 모든 로그 출력은 가급적 로거를 통해 남겨야 합니다. spring.jpa.properties.hibernate.show_sql: true => 쿼리를 System.out으로 출력한다. (권장되지 않음) logging.level.org.hibernate.SQL: debug spring.jpa.properties.hibernate.format_sql: true => 이 2개를 사용하면 쿼리를 로거를 통해 보기 좋게 출력한다. logging.level.org.hibernate.type: trace => 이것을 사용하면 쿼리 파라미터의 값까지 확인할 수 있다. application.yml 코드 spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop usernam.. 2021. 4. 28.
ddl-auto 옵션 관련 주의할 점!!!!!!!!! 얼마전에 개발바닥 호돌맨님의 재난급 서버 장애내고 개발자 인생 끝날뻔 한 썰을 보게 되었다. 나처럼 JPA를 많이 안써본 사람들이 보면 아주 도움될 영상이다🤣🤣 결론은 spring.jpa.hibernate.ddl-auto: create 옵션은 로컬환경에서만 사용해야 된다는 것이다. 모르시는 분들을 위해 설명하자면 create 옵션은 해당하는 테이블이 있으면 DROP하고 새로 만들어 버린다. 관련 로그 2021-04-28 15:58:50.411 DEBUG 32520 --- [ main] org.hibernate.SQL : drop table if exists member CASCADE 2021-04-28 15:58:50.417 DEBUG 32520 --- [ main] org.hibernate.SQL : .. 2021. 4. 28.