DennisKingsman
@DennisKingsman
Студент

Чем отличается Hibernate от spring Data и в принципе инструменты работы с БД?

Здравствуйте, я делал проект и мне казалось, что использовал для него Spring Data вот часть моего pom
<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
...

вроде подключен spring data
но в пропертях у меня установка стоит как я понимаю для hibernate
# ===============================
# JPA / HIBERNATE
# ===============================

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

# Fix Postgres JPA Error:
# Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented.
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false


вот у меня вопрос что ж я все таки использовал и чем отличается одно от другого
+ при запуске проекта, после того как спринг бут запустил автоконфигурацию и начал искать бины (тоесть отработала @springBootApplication , включающая в себя 3 аннотации @SpringBootConfiguration, @EnableAutoConfiguration и @ComponentScan , заимпортировал все нужные конфиги, попытался намутить бины в число которых входят EntityManagerFactory(для Jpa) и dataSource(для подключения к базе через JDBC драйвер) потом в самом конце он еще ищет фабрику для embedded servlet container, поднимает tomcat
я вижу в консоли следующее
2019-06-21 20:36:08.791 INFO 4640 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.3.10.Final}
2019-06-21 20:36:08.797 INFO 4640 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-06-21 20:36:10.838 INFO 4640 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}

далее там еще всякая всячина идет и потом я натыкаюсь на
2019-06-21 20:36:21.263 TRACE 4640 --- [ main] o.h.type.spi.TypeConfiguration$Scope : Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@4ac19bc6] for TypeConfiguration
2019-06-21 20:36:21.267 INFO 4640 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'

тоесть как бы хибернейт проперти нет , но есть апликейшен проперти , еще тут используется JPA , на сколько я знаю это уровень абстракции , а вот hibernate и spring data уже ее реализации, что до hibernate то, я как-то пытался сделать проектик на простом hibernate и там не было никакого spring а в помник я подключал
<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.18.Final</version>
        </dependency>

а в ресурсах прописывал hibernate.cfg.xml. Ну это как пример где я понимаю что имею действие прям с самим hibernate
Вот а что касается бина datasource (который вроде связан с JDBC ) то он еще используется моим приложением в security конфига(spring security)
вот не могли бы вы подсказать почему используя spring data я использую hibernate и в чем разница между ними и jdbc если получается они оба используют datasource который использует JDBC , Спасибо
  • Вопрос задан
  • 9687 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
JDBC - это стандарт доступа к базам данных, JPA - это стандарт персистентности, Hibernate - это реализующий его ORM, Spring Data - это механизм организации репозиториев, а репозиторий - это абстракция, лежащая на уровень выше ORM. То есть Spring Data использует Hibernate, а Hibernate использует JDBC.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы