Spring-data-JPA와 DBMS를 연결해서 사용할 때 간편히 개발환경의 변경사항을 적용하여 테스트 할 수 있다.
DDL Generation
Spring은 EntityScan을 통해 @Entity 에노테이션이 명시한 클래스를 찾는다.
Spring.jpa.generate-ddl=true 옵션을 true로 설정하면 해당 데이터를 근거로 서버 시작 시점에 DDL문을 생성하여 DB에 적용한다.
jpa.generate설정은 JPA 구현체 DDL 생성 옵션의 링크이고, true/false밖에 선택할 수 없다.
Spring.jpa.hibernate.ddl-auto 옵션을 통해 보다 상세한 데이터 베이스 초기화 전략을 설정할 수 있음
- none: 아무것도 실행하지 않음
- create-drop : SessionFactory가 시작될 때 drop 및 생성을 실행하고, SessionFactory가 종료될 때 drop을 실행한다.
- create: SessionFactory가 시작될 때 데이터베이스 drop을 실행하고 생성된 DDL을 실행한다.
- update: 변경된 스키마를 적용한다.
- validate : 변경된 스키마가 있다면 변경점을 출력하고 애플리케이션을 종료한다.
SQL script
Spring 기본값으로 classpath 루트에 schema.sql 파일이 있다면 서버 시작시 스크립트를 실행한다.
보통 schema.sql은 DDL 스크립트를 명시해두고, 데이터를 위한 DML문은 data.sql 파일로 작성해두면 자동으로 실행한다.
또한 JPA는 schema-${platform}.sql 과 data-${platform}.sql 파일이 있다면 실행시켜 데이터베이스 플랫폼에 맞춘 스크립트 실행이 가능하다. 사용할 플랫폼 정의는 Spring.datasource.platform값을 따른다.
spring.datasource.initialization-mode=never # Property for Spring boot 2.0
spring.datasource.initialize=false # Property for Spring boot 1.0
→data.sql로 웹구동시 데이터 insert하기
'SPRING > JPA' 카테고리의 다른 글
[JPA] 프록시 (0) | 2022.01.21 |
---|---|
[JPA]객체지향 쿼리 심화 (0) | 2022.01.21 |
[JPA]NamedQuery (0) | 2022.01.21 |
[JPA] 엔티티 직접사용 (0) | 2022.01.21 |
[JPA] 값 타입종류 (0) | 2022.01.21 |