0. 기본 프로젝트 설정
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/스키마이름?serverTimezone=UTC&characterEncoding=UTF-8
username: 아이디
password: 비밀번호
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQLDialect
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 1000
messages:
basename: messages,errors
server:
servlet:
encoding:
force-response: true
0-1. H2 이용
spring:
application:
name: 어플리케이션 이름
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2-console
datasource:
url: jdbc:h2:tcp://localhost/~/DB이름
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
show-sql: true
generate-ddl: true
defer-datasource-initialization: true
sql:
init:
mode: always
logging:
level:
1. 초기 데이터 설정
- spring.jpa.defer-datasource-initialization: true -> script파일이 hibernate 초기화 이후 동작하게 하기 위한 옵션, 내장 데이버에시ㅡ(h2, hsql)에 대해서 스클비트 기반의 초기화를 기본적으로 실행하지만, 내장DB가 아닌 경우 활성화(=alway)를 해야한다
- spring.sql.init.mode: always -> SQL 초기화를 항상 수행할 것인지 지정, alway 설정시 애플리케이션 시작 시점에 sql 초기화를 항상 수행, sql초기화는 schema.sql 및 data.sql 파일을 실행하여 스키마와 초기 데이터를 설정
- data.sql이 ddel-auto=create 보다 먼저 실행되기 때문에 오류가 발생, hibernate보다 늦게 실행되도록 설정해줘야 한다
spring:
...
jpa:
hibernate:
ddl-auto: create
defer-datasource-initialization: true
sql:
init:
mode: always
2. RabbitMQ
rabbitmq-server -detached
rabbitmq-plugins enable rabbitmq_management
// 안될시에
rabbitmq-service.bat remove
rabbitmq-service.bat install
rabbitmq-server -detached
rabbitmq-plugins enable rabbitmq_management
3. JPA SQL 확인
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
4. Querydsl
//Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"