2016-06-30 2 views
1

문서의 many에서 hibernate.cfg.xml에 방언을 정의해야 어떤 언어를 사용할지 최대 절전 모드로 할지를 결정할 수 있습니다. 이 최대 절전 모드의 기초는 각각의 SQL을 생성합니다.우리가 dilect를 정의해야하는 이유, 최대 절전 모드의 구성 파일에 드라이버를 이미 정의한 경우

<property name="hibernate.conection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.dilect">org.hibernate.dialect.MySQLDilect</property> 

이상이 모든 데이터베이스 제공 업체의 여러 드라이버가 가능할 수도 있고 드라이버마다 해당 버전에 따라 여러 가지 사투리가있을 수 있습니다.

내 요점은 우리가 이미 드라이버 (고유)를 이미 언급했을 때이고 동시에 우리는 jar의 단일 버전이며, 왜 이것이 SQL을 생성하기에 충분하지 않은지입니다.

답변

0

방언은 선택적인 구성 옵션입니다. 대개 hibernate는 데이터베이스 연결에 기반한 dialect를 자동으로 탐지 할 수있다.

다른 방언이 필요할 수도 있습니다. - 다른 버전의 데이터베이스에는 다른 방언이 필요할 수 있습니다. - 방언을 사용자 지정/버그 수정하고 지정합니다.

+0

나는 사투리가 있지만 응용 프로그램에서, 각각의 데이터베이스 공급자의 각 버전에 대한 다를 수 있습니다 동의하면 다양한 버전을 사용할 수 없습니다. –

0

드라이버가 고유하고 연결할 데이터베이스를 지정하는 데 사용할 수 있다고 가정합니까? 동일한 데이터베이스를 지원하는 많은 드라이버 클래스를 가질 수 있습니다. MySQL의 경우 공통 드라이버가 하나 있지만 Oracle을 고려하십시오.

오라클 용 드라이버는 입니다. 이것을 확인하십시오 http://www.oracle.com/technetwork/java/index-136695.html

Hibernate가 지정한 드라이버 중 하나를 사용해야하는 경우, 사용할 방언 (SQL 구문)을 어떻게 알 수 있습니까? 따라서 드라이버 클래스와 최대 절전 모드로의 Dialect를 모두 지정해야합니다.

+0

그렇습니다. 데이터베이스 용 드라이버가 여러 개있을 수 있지만 각 드라이버를 선택하는 것이 각각의 SQL을 생성하는 데 충분하지 않습니다. –

0

연결 드라이브 클래스는 데이터베이스 관리 시스템 (DBMS) 공급 업체를 가리 킵니다. 하나의 DBMS, 벤더에는 많은 버전이 있기 때문에, 버전마다 특정 기능 세트가 있습니다. DBMS별로 시간이 갈수록 더 많은 기능을 추가합니다. 예를 들면 :

오라클

오라클 8i를 (1999 년 발표) (2001 년 출시) org.hibernate.dialect.Oracle8iDialect

오라클 9i의를 사용하여 사용 org.hibernate.dialect.Oracle9iDialect

오라클 10g (2003 년 출시) 사용 org.hibernate.dialect.Oracle10gDialect

오라클 11g (2007 년 출시) 사용 org.hibernate.dialect.Oracle10gDialect

(2013 년 출시)

오라클 12C 사용 org.hibernate.dialect.Oracle12cDialect

이 현재 버전에서 방언의 전체 목록은 다음과 같습니다 https://docs.jboss.org/hibernate/orm/current/javadocs/org/hibernate/dialect/package-summary.html

+0

12c 릴리즈에서 제공되는 드라이버를 사용하고 있습니다. 내 jwars/mavem-dependency를 변경하지 않고 11g로 전환 할 수 있습니까? –

+0

Oracle 데이터베이스 버전을 확인하십시오. 그러면 방언은이 버전을 따릅니다. –