토이 프로젝트 배우게 된 것들 & 오류 해결🐰

hibernate db dialect 오류

j_estory 2022. 11. 28. 13:54

위의 오류 사항을 분석해보기 전에! 하이버네이트가 무엇인지 알아보자

 

🏷 hibernate

 

하이버네이트는 자바 언어를 위한 객체 관계 매핑 프레임 워크로,

객체 지향 도메인 모델 > 관계형 데이터 베이스 맵핑 시, 사용한다.

JPA 구현체 중 하나로 sql을 직접 사용하지 않고, 메서드 호출만으로 쿼리를 수행한다. 

 

🏷 hibernate dialect

 

하이버네이트가 데이터베이스와 통신을 하기 위해 사용하는 언어를 의미한다.

모든 db는 각자의 고유한 언어가 있다. 

관계형 DB에서는 형태, 문법이 어느정도 비슷하지만 완전히 똑같지는 않다.

 

하지만, 하이버네이트는 한 데이터베이스관리시스템(DBMS)에 국한되지 않고, 다양하게 사용 가능하다. 

JPA에서는 아래와 같이 Dialect라는 추상화된 언어 클래스를 제공하고 각 벤더에 맞는 구현체를 제공하고 있다.

🚨 오류 내용

 

Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

  • 접근할 Dialect해결정보는 null일 수 없습니다.
  • 'hibernate.dialect'이 세팅되지 않았다.

 

✅ 해결 방법

 

위 오류는 결국 H2 DB를 처리해줄 수 있는 dialect의 값이 제대로 설정되지 않아서 나타나는 오류였다. 

그래서 아래와 같이 dialect의 값을 지정해주면 된다. 

저의 경우는 H2 DB를 사용했으므로, H2Dialect를 명시했고 다른 DB 사용 시, 위의 구현체 그림을 통해 적절하게 명시해주면 된다.