Java

[Spring Boot] Spring Data JPA 데이터 초기화

cob 2023. 7. 3. 23:44

 

* Spring Data JPA 연동

2023.07.02 - [Java] - [Spring Boot] Spring Data JPA 사용 방법


* 전체 소스
https://github.com/kangilbin/Spring-Boot/tree/master/Spring%20Data%20JPA

 

 


1. JPA를 사용한 데이터 베이스 초기화 방법

1-1) 스키마 자동 생성

application.properties 설정 파일에 추가
# 엔티티 정보를 바탕으로 자동 스키마 생성
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true  // 해당 옵션을 사용할지 말지 여부(기본은 false)
  • Entitiy 클래스를 정보를 바탕으로 스키마를 자동 생성해 준다.
  • spring.jpa.hibernate.ddl-auto 옵션을 아래 표에 있는 옵션 중 하나를 사용하면 자동으로 스키마가 생성해준다.
옵션 설명
update 기존에 데이터를 유지하며  추가된 정보만 변경을 한다.(없으면 생성)
create-drop 애플리케이션 실행시 생성하고 종료되면 삭제한다.
create 애플리케이션 실행시 삭제하고 새로 생성한다.

 

스키마란?
테이블은 행과 열로 구성된 데이터 집합을 의미한다면 스키마는 제약조건, 무결성 규칙, 테이블, 열과 데이터 유형 등을 정의한 것이다.

 

 

 

 


2. SQL 스크립트를 사용한 데이터 베이스 초기화

운영 환경에서는 스키마 변경의 불필요한 위험을 최소화하고, Hibernate가 애플리케이션 시작 시점에 Entity와 데이터베이스 스키마를 유효성 검사하는 validate 옵션을 사용한다.

 

1-1) application.properties 설정 파일

spring.jpa.hibernate.ddl-auto=validate
spring.jpa.generate-ddl=false

# Sql문 콘솔에 출력
spring.jpa.show-sql=true
  • validate : Entity와 DB 테이블이 맵핑이 되는지 검증을 하는 옵션으로 DDL로 변경은 하지 않는다. 변경을 하지 않기 때문에 false로 옵션을 꺼준다

 

 

1-2) SQL 스크립트 파일 생성

애플리케이션이 구동될 때마다 새로 삭제하고 만드는 SQL 스크립트를 사용해 초기화가 이루어진다.

  • resources > schema.sql 파일 생성
  • schema.sql 또는 schema-${platform}.sql
  • data.sql 또는 data-${platform}.sql
  • ${platform} 값은 application.properties 파일의spring.datasource.platform으로 설정
  • 순서는 schema.sql 호출 후에 data.sql이 호출된다.
  • SQL  스크립트로 파일을 만들면 단위 테스트(Junit) 가능

 

 


3. 활용 방법

개발환경에서는 update 옵션을 주고 개발을 하다, 운영 배포 전에 아래 사진처럼 create 옵션을 줘서 깔끔한 스키마를 뽑고

스키마 출력

복사해 schema.sql 파일에 넣어서 사용한다. update를 두고 개발을 하면 스키마가 지저분해지고 안 쓰는 컬럼이 생기기도 한다.(Entity 클래스에서 이름 변경시 update가 아닌 컬럼이 추가) Drop이 있으면 데이터가 삭제되니 주의해야 한다.

 

 

반응형