본문 바로가기
trouble shooting/spring

JPA Diarect(방언) 지정

by 일상코더 2022. 11. 30.

1. 문제상황 JPA Dialect(방언)을 지정하라는 멘토님 피드백을 받았다.

 

2. 문제 원인

mysql dialect(방언) 를 지정해주지 않았다. 

 

그렇다면 mysql dialect는 무엇인가?

 

 세상엔 많은 데이터베이스 제품이 존재하고, 각각의 제품은 표준 SQL(ANSI SQL)을 제회한 독자적인 기능을 위한 SQL도 존해단다. 그리고 각각의 데이터베이스에서 제공하는 문법과 함수가 차이가 있다.

 

 ● 가변문자: VARCHAR(MySQL), VARCHAR2(Oracle), NVARCHAR(SQL SERVER)

 ● 문자열 자르는 함수: SUBSTRING(표준 SQL), SUBSTR(Oracle)

 ● 페이징: LIMIT(MySQL), ROWNUM(Oracle)

 

이러한 차이를 방언(Dialect)라고 하며, JPA에서는 추상화된 방언 클레스를 제공한다. JPA를 사용하지 않으면 애플리케이션의 DBMS가 변경될 경우 혹은 같은 애플리케이션을 다른 DBMS에서 동작시켜야하는 경우 기존에 작성된 SQL을 모두 수정해야하지만, JPA를 사용하면 이 Dialect 덕분에 그러한 시간과 비용을 아낄 수 있다.

 

 

DBMS별 hibernate Dialect 설정 방법은 persistence.xml 파일에서 hibernate.dialect설정 값을 변경해주면 된다. 

 

3. 문제 해결

 

application.yml에 dialect 추가

dialect : org. hibernate.dialect.MySQL8InnoDBDialect

댓글