我是JPA世界的新手,对JPA和HIBERNATE以及它与Spring数据的关系有误解,你们能告诉我Spring数据是像JPA一样的规范还是JPA的实现,如果这是真的,HIBERNATE在哪里?以及为什么我们有这个(springframwork)
import org.springframework.data.jpa.repository.JpaRepository;而不是HIBERNATE导入?我们在哪里调用JPA接口?注意:我是基于this articale的
先谢谢你……
发布于 2018-01-29 00:02:56
JPA是对象关系映射的规范。
Hibernate就是这个规范的一个实现。
Spring-data-JPA是JPA之上的抽象,简化了存储库的编写,即使用JPA API获取、保存、删除和查询JPA实体的类。
当然,您可以通过简单地阅读the documentation了解更多信息
发布于 2018-01-29 00:36:10
用一些历史来解释。
JDBC第1阶段:最初,所有数据库操作都是使用和SQL语句在代码中完成的。问题1:更改底层数据库是一个大问题,因为这将需要大量的代码更改,因为我们使用的是特定于正在使用的数据库的SQL语句(紧密耦合)
ORM解决方案1:提出了一种模型,这将有助于轻松地替换数据库。
阶段2:我们有不同的ORM,比如Hibernate、IBatis等等,它们帮助我们轻松地替换数据库。
问题2:如果我们必须改变对象模型本身(而不是数据库),我们又遇到了同样的问题。ORM解决方案2:为任何持久化或ORM制定了一个规范
阶段3: JPA解决了我们之前遇到的问题。
问题3:现在是Nosql数据库的时代。现在我们又遇到了同样的问题,如果我们必须将数据库从sql切换到nosql,反之亦然(因为sql只适用于关系型数据库)。
解决方案3:引入了spring-data解决了这个问题。它提供了更高级别的抽象。spring-data提供了不同的模块。
用于关系数据库的spring-data-jpa
spring-data-mongodb for Mongo
spring-data-redis for redis
spring-data-cassandra的cassandra

现在来看看在什么情况下指定Hibernate的问题。
因为您使用的是spring-boot(这是固执己见的),所以它将hibernate作为默认ORM来与数据库(关系)对话。如果您希望使用其他ORM,则必须手动配置它。
https://stackoverflow.com/questions/48488211
复制相似问题