Ответ
Hibernate определяет JDBC-драйвер по комбинации конфигурационных свойств и анализа classpath.
Основные механизмы:
- Явное указание: Драйвер можно задать напрямую через свойство
hibernate.connection.driver_class. - Неявное определение (чаще всего): Hibernate использует диалект (Dialect) и URL подключения.
- Диалект (например,
org.hibernate.dialect.MySQL8Dialect) указывает на СУБД. - URL (например,
jdbc:mysql://localhost:3306/db) содержит схему (jdbc:mysql:). - Hibernate ищет в classpath подходящий драйвер, который зарегистрирован для этой схемы.
- Диалект (например,
Пример конфигурации hibernate.cfg.xml:
<!-- Диалект помогает Hibernate генерировать правильный SQL -->
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<!-- URL содержит схему 'jdbc:postgresql:' -->
<property name="hibernate.connection.url">jdbc:postgresql://localhost/mydb</property>
<!-- Драйвер часто подбирается автоматически, но можно указать явно -->
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
Важно: Сам JDBC-драйвер (JAR-файл, например mysql-connector-java или postgresql) должен быть добавлен в зависимости проекта (Maven/Gradle). Hibernate не включает драйверы "из коробки".