[Java] Jpa.show-sql?

박종건·2024년 3월 7일

유데미의 강의를 듣다가 단순 궁금증이 생겼다.

application.properties에 spring.jpa.show-sql=true 설정을 해주면 Hibernate가 Repository에서 실행되는 sql문장들을 console에 보여준다.

근데 resources폴더에 있는 data.sql (sql 스크립트) 파일의 sql문장은 보여주지 않았다.

스프링부트에서는 데이터베이스 초기 설정을 위해 기본적으로 script(schema.sql, data.sql) 파일을 사용할 수 있는데,
관념적으로 데이터 정의어(DDL)는 schema.sql 파일에 작성하고 데이터 조작어(DML)은 data.sql 파일에 작성된다.

웹을 실행하면 ddl을 생성하는 문장만 보여준다.

하지만 실제 페이지로 가보면 data.sql에 있던 insert는 들어가 있다.

결론

검색과 고민을 통해 생각한 결론은 sql 스크립트는 DataSourceInitializer가 실행을 하기때문에 hibernate의 로그에 찍히지 않는 것이다.

org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer 파일을 확인해보면 initSchema() 메서드에서 runScripts 메서드를 호출하는 부분을 찾을 수 있는데 이부분이 바로 data.sql 을 실행하는 부분이다.

Hibernate가 실행한 sql이 아니기 때문에 로그에 찍히지 않는 것이라고 생각했다.

당연한 결론인가..?

profile
될때까지 하자

0개의 댓글