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
'trouble shooting > spring' 카테고리의 다른 글
실전 프로젝트 service 로직 개선 사항 (0) | 2022.12.02 |
---|---|
@Transactional(readOnly = true) (1) | 2022.12.02 |
실전 프로젝트 피드백 N+1 문제 (0) | 2022.11.29 |
Unsupported Media Type, status 415 (0) | 2022.11.14 |
java.lang.StackOverflowError: null (0) | 2022.11.12 |
댓글