2017-12-18 14 views
0

hibernate를 사용하여 java 영속성에 대해 배우면서 나는 hibernate가 방언 속성을 정의하는 것을 의무화 시켰습니다. 저는 SQL이 공용 언어이고 DB 통신에 사용되는 것이 혼란 스럽습니다. 다른 DB에 대해 다른 방언을 사용해야하는 이유는 무엇입니까? JPA 스펙이 그것에 대해 신경 쓰지 않는 동안 방언을 정의하는 것을 엄격히 요구하는 이유는 무엇입니까?왜 JPA 스펙이 필수가 아닌데도 hibernate가 hibernate.dialect 프로퍼티를 정의하도록 엄격하게 요구 하는가?

답변

1

일반적으로 Hibernate는 hibernate.dialect 속성을 설정할 필요가 없다. http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#database-dialect

7.12 :

이 문서는 장 7.12에서 말씀을 보라. 데이터베이스 Dialect

SQL은 비교적 표준화되어 있지만 각 데이터베이스 공급 업체는 하위 집합과 ANSI SQL 정의 구문의 수퍼 집합을 사용합니다. 이것은 데이터베이스의 방언이라고합니다. Hibernate는 각 데이터베이스 벤더의 org.hibernate.dialect.Dialect 클래스와 여러 서브 클래스를 통해 이들 사투리의 변형을 처리합니다.

대부분의 경우, Hibernate는 부트 스트랩 중 JDBC 연결에 대한 몇 가지 질문을 통해 적절한 Dialect 을 사용할 수 있습니다. 사용할 수있는 적절한 Dialect (그리고 그 해상도에 영향을 줄 수있는 능력)를 결정하는 Hibernate의 능력에 대한 정보는 의 Dialect resolution을 참조하십시오.

사용자 지정 Dialect를 사용하려는 경우 어떤 이유에서든 hibernate.dialect 설정을 지정해야합니다.

+0

감사합니다. simon. 그것은 매우 유용했습니다. –