У меня есть простое приложение Springboot, которое использует H2 в базе данных памяти. Я использовал следующую зависимость в своем POM
Когда я запускаю приложение, оно автоматически создает таблицы Entity, используя Hibernate Dialect. Я нигде не упоминал о Hibernate в моем POM. Так почему же это происходит. Почему Spring использует Hibernate Dialect. Есть ли у нас возможность изменить этот диалект на какой-то другой диалект? пожалуйста помоги.
Ну, вы используете понятие «spring-boot-starter-data-jpa» и «starter», что означает, что у него есть все для работы. Если вы посмотрите на https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa/2.1.3.RELEASE , эта зависимость также включает hibernate-core.
Стартовые помпы в экосистеме SpringBoot приносят набор зависимостей, которые были протестированы и доказали свою совместную работу. Это также избавляет вас от необходимости управлять правильными версиями зависимостей.
Вы используете весна-загрузка-стартер-данные-jpa, который является стартовой помпой для JPA. Здесь самоуверенным выбором является использование Hiberante в качестве провайдера JPA.
Если вы посмотрите на исходный файл pom, вы увидите следующее определение:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
Это то, что приносит спящий режим в ваш проект, хотя вы явно не объявили его в своем pom. Спящий режим загружается как неявная зависимость из-за вашего стартового файла spring-boot-starter-data-jpa.