spring initializr로 접속해서 위와 같이 셋팅 해준다.

스프링 부트도Gradle - Groovy 선택을 디폴트로 한다. Maven보다 현재 스프링 개발자들은 Gradle을 사용하는 편이며 그 이유는 xml로 관리되는 메이븐에 비해 짧고 간결한 문법, Maven에 비해 C/C++ 등 다른 언어에서도 사용가능한 범용성, 빌드 캐시를 사용하는 대규모 빌드의 경우 최소 2배에서 100배 정도의 성능차이가 그 이유이다.
빌드 도구
Gradle을
빌드 도구라 칭하는데 이는 Gradle이 컴파일, 테스트, 패키징, 배포와 같은 소프트웨어의 빌드 프로세스를 자동화하기 때문이다. 소프트웨어 빌드는소스 코드에서 실행 가능한 소프트웨어 제품을 만드는 과정이다. 개발자가 직접 작성한 소스코드 + 스프링 부트를 통해 미리 구성된 라이브러리 및 초기 구조가 모두 이에 해당한다. 소스 코드는 컴파일되고 테스트가 진행되고 실행 파일로 패키징된다. 이때 스프링 프로젝트는 jar(JAVA Archive)파일로 패키징 된다. 이 jar파일을 통해 배포되며 개발자는 소스 코드들을 수정하며 유지보수한다. 이러한 전체 과정을 Gradle과 같은 빌드 도구의 도움을 통해 간편하게 구현할 수 있다.
initializr로 셋팅해준 라이브러리외에 spring-boot-devtools를 build.gradle에 추가하게 되면 개발 시 서버 재시작 없이 편리하게 View 파일 변경(thymeleaf 템플릿 파일 변경)이 가능하다.
H2를 다운 받는다.(스프링 부트 3 이상에서는 2.1.214버전 이상 사용) 터미널로 bin 디렉터리의 h2.sh를 실행한다. (bin 경로에서 ./h2.sh 명령어로 실행)
URL에 jdbc:h2:~/jpashop로 하여금 ~/jpashop.mv.db DB 파일을 생성하고(처음에만 이렇게 해주면 됨.)
그 이후 DB 접속마다 URL에 jdbc:h2:tcp://localhost/~/jpashop로 고정 접속해주면 된다.
아마 스프링부트로 처음 프로젝트를 생성하면 src/main/resources 경로에 application.properties가 생성될 것이다. 이를 지우고 application.yml파일을 만들어 사용한다.
.yml확장자로 설정 파일을 관리하는 것이 가독성이 더 좋으며(복잡한 데이터 구조를 쉽게 설정 가능, 계층 구조, 주석 처리 가능)
개발자 스타일의 문제이기 때문에 바꿔야한다 그렇지 않다에 대한 확실한 해답이 있는 것은 아니다.
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
org.hibernate.orm.jdbc.bind: trace #스프링 부트 3.x, hibernate6
애플리케이션 실행 시점에 jpa Entity를 활용해서 테이블을 drop하고 다시 생성한다.
show_sql 옵션은 System.out 에 하이버네이트 실행 SQL을 남기지만 org.hibernate.SQL 옵션은 logger를 통해 하이버네이트 실행 SQL을 남긴다. 시스템 출력보다 로그를 찍는 것이 개발 관점에서 더 옳으므로 show_sql은 사용하지 않는다.
org.hibernate.SQL: debug 를 통해 로그를 남겼지만 쿼리 파라미터 부분인 (?, ?)에 대해 무엇이 들어갔는지 확인하기 위해 org.hibernate.orm.jdbc.bind: trace(스프링 부트3 기준)을 추가해준다.