그런데, 굳이 하이버네이트를 공부하게된 이유가 무엇인가?
애초에 하이버네이트를 쓸일은 데이터베이스와 접근할 때 쓰이게 되는데,
평소 Spring을 사용하면서H2
와 연동하다가,MySQL
로 연동을 바꾸는 과정에서 문제가 발생하였다.
Mysql
임을 설정해줘야하기에 spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: shin
password: ****
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: create # 스키마 자동 생성
show-sql: true # SQL 쿼리 출력
properties:
hibernate:
format_sql: true # SQL pretty print
Access to DialectResolutionInfo cannot be null
when 'hibernate.dialect' not set
dialect
가 먼지 검색해보니까 , 사투리,방언으로 나온다.
맥락이 이상해지길래, 결국 하이버네이트의 dialect가 뭔지 찾아보게 되었다.
위 오류는 결국 MySql SQL를 처리해줄수 있는 dialect
의 값이 제대로 설정되지 않아서 나타나는 오류임을 알수 있다.
그래서 JPA에 값을 지정해주면 해결이 된다.
해결한 application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: shin
password: ****
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database: mysql # 추가 해준 부분
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect # 추가 해준 부분
hibernate:
ddl-auto: create
show-sql: true
properties:
hibernate:
format_sql: true
OracleDiect
를, H2로 바꾸는 상황이었다면 H2Dialect
의 platform를 찾아 넣어주면된다.MySQL5InnoDBDialect
dialect로 설정해줘야한다.