728x90
반응형
🔗 참고자료
- 블로그 <어제보다 더 나은 개발자> spring-boot init sql (schema.sql) 이란? => 링크
✍ 공부하게 된 계기
JPA를 사용했을 때는 ddl-auto로 model에 설계한 대로 자동으로 처리를 해줬다.
그런데 마이바티스를 사용하면서 schema.sql이라는 것으로 초기에 DB에 쿼리문을 날리도록 한다는걸 알게되었다.
마이바티스를 처음 사용할 때 data.sql 파일에다가 ddl을 작성하는 실수도 했었다.
그래서 schema.sql과 data.sql에 대해 좀 더 찾아보고 정리하게 되었다.
schema.sql
- 어플리케이션을 로딩 시 쿼리문을 실행하고 싶을 경우 초기에 db에 쿼리문을 날릴 때 유용하다.
- 스프링 이용할 때 schema.sql 파일을 사용해서 초기 스키마를 생성할 수 있다.
- schema.sql은 ddl을 작성한다
- 스키마 : 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건등에 관해 전반적으로 정의한다.
data.sql
- 스프링 부트 초기 DB 데이터를 삽입하는 쿼리문을 작성해놓는 곳이다.
- data.sql은 dml을 작성한다.
추가내용
- Spring boot 2.4 이하 버전의 경우 **src/resource/** 하위에 schema.sql이나 data.sql파일이 있는 경우 자동 실행
=> 실행되지 않을 경우 spring.datasource.initialization-mode=always 를 세팅한다. - Spring boot 2.5 이상 버전의 경우 자동으로 실행되지 않아 spring.sql.init.mode=always 프로퍼티 값을 입력
- JPA와 함께 사용하는 경우 Hibernate의 ddl-auto 기능과 함께 schema.sql을 실행하면 schema.sql이 먼저 실행되고
Hibernate의 기능이 수행된다.
=> 이 순서를 바꾸고 싶으면 spring.jpa.defer-datasource-initialization=true 옵션을 입력한다.
=> schema.sql로만 설정하고 싶으면 spring.jpa.hibernate.ddl-auto=none 옵션을 입력한다.
728x90
반응형
'프로그래밍언어 & 프레임워크 > 스프링(Spring)' 카테고리의 다른 글
Tomcat과 Spring MVC 동작 과정 (0) | 2022.12.15 |
---|---|
DispatcherSevlet 직접 구현해보기(구현 중) (0) | 2022.12.08 |
스프링 시큐리티(Spring Security)와 JWT란? (0) | 2022.11.29 |
[Spring] 게시글 수정 로직 위치 Entity vs Service (0) | 2022.05.18 |
[Spring] Jasypt를 활용한 yml 암호화해보기(gradle, intellij) (4) | 2022.05.10 |