Почему мы должны определить 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