Почему мы должны определить dilect, когда мы уже определили драйвер в файле конфигурации в спящем режиме

Во многих документах, которые я обнаружил, мы должны определить диалект hibernate.cfg.xml сказать Hibernate, на каком языке мы будем использовать или Hibernate. На основе этого Hibernate генерирует соответствующий SQL.

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

Более того, возможно наличие нескольких драйверов для любого поставщика базы данных, а также для любого драйвера может быть несколько диалектов в соответствии с их версией.

Я хочу сказать, что даже когда мы уже упоминали драйвер (уникальный) там и в то время, когда мы являемся единственной версией jar, то почему этого недостаточно только для генерации sql.

3 ответа

Диалект является дополнительной опцией конфигурации. Обычно hibernate может автоматически определять диалект на основе соединения с базой данных.

Но в некоторых случаях вам может потребоваться другой диалект - разные версии базы данных могут требовать разных диалектов. - Настройте / исправьте диалект и укажите его.

Вы предполагаете, что Драйвер является уникальным и может использоваться для поиска базы данных для подключения? Ну, вы можете иметь много классов драйверов, которые поддерживают одну и ту же базу данных. Может быть, для MySQL сейчас есть один общий драйвер, но рассмотрим Oracle.

Есть много драйверов для Oracle. Проверьте это http://www.oracle.com/technetwork/java/index-136695.html

Если Hibernate должен использовать любой из указанных вами драйверов, как он узнает, какой диалект (синтаксис SQL) использовать? Поэтому вам нужно указать класс Driver и Dialect to Hibernate.

Класс диска подключения просто указывает на поставщика системы управления базами данных (СУБД). Поскольку одна СУБД, у поставщика есть много версий, у каждой версии есть определенный набор функций. К тому времени в СУБД добавлено больше возможностей. Например:

оракул

Oracle 8i (выпущен в 1999 году) использовать org.hibernate.dialect.Oracle8iDialect

Oracle 9i (выпущен в 2001 году) использовать org.hibernate.dialect.Oracle9iDialect

Oracle 10g (выпущен в 2003 году) использовать org.hibernate.dialect.Oracle10gDialect

Oracle 11g (выпущен в 2007 году) использовать org.hibernate.dialect.Oracle10gDialect

Oracle 12c (выпущен в 2013 году) использовать org.hibernate.dialect.Oracle12cDialect

Это полный список диалектов в текущей версии: https://docs.jboss.org/hibernate/orm/current/javadocs/org/hibernate/dialect/package-summary.html

Другие вопросы по тегам