了解spring boot和hibernate交互

时间:2018-01-28 15:51:23

标签: hibernate jpa spring-boot

我是JPA世界的新手并且对JPA和HIBERNATE及其与Spring Data的关系有误解,你们能不能告诉我Spring Data是像JPA这样的规范还是JPA的实现,如果这是真的在哪里HIBERNATE?为什么我们有这个(springframwork)

import org.springframework.data.jpa.repository.JpaRepository;

而不是HIBERNATE导入?我们在哪里调用JPA接口? 注意:我基于this articale

提前谢谢你......

2 个答案:

答案 0 :(得分:1)

JPA是对象关系映射的规范。

Hibernate是本规范的一个实现。

Spring-data-JPA是JPA之上的抽象,简化了存储库的编写,即使用JPA API获取,保存,删除和查询JPA实体的类。

您当然可以通过阅读the documentation

了解更多信息

答案 1 :(得分:0)

解释一下历史。

第1阶段:最初所有数据库操作都是使用带有sql语句的jdbc在代码中完成的。 问题1:更改底层数据库是一个大问题,因为这需要大量的代码更改,因为我们正在使用  sql语句特别适用于正在使用的数据库(紧耦合)
解决方案1:提出一个ORM模型,这将有助于轻松替换数据库。

第二阶段:我们有不同的ORM,如Hibernate,IBatis等,这有助于我们轻松更换数据库。
问题2:如果我们必须更改ORM本身(而不是数据库),我们又会遇到同样的问题。 解决方案2:提出任何持久性API或ORM的规范

第3阶段: JPA解决了我们之前遇到的问题 问题3:现在是Nosql数据库的时代。现在我们又遇到了同样的问题,如果我们必须切换数据库怎么办? 从sql到nosql,反之亦然(因为 JPA仅适用于关系数据库
解决方案3:来了spring-data解决了这个问题。这提供了更高级别的抽象。 spring-data提供不同的模块。

关系数据库的spring-data-jpa

Mongo的spring-data-mongodb redis的spring-data-redis
cassandra的spring-data-cassandra

enter image description here

现在问你在哪种情况下指定Hibernate。

由于你使用的是spring-boot(这是自以为是的),它需要将hibernate作为默认的ORM与数据库(关系)进行通信。如果您想要使用其他ORM,则必须手动配置它。