zoukankan      html  css  js  c++  java
  • JPA、Hibernate、Spring-Data-Jpa的本质区别

    什么是JPA?

      全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。

    为我们提供了:

      1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;

        如:@Entity、@Table、@Column、@Transient等注解。

       2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。

        如:entityManager.merge(T t);

       3)JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

        如:from Student s where s.name = ?

      但是:

      JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。

      也就是说:

      JPA是一套ORM规范,Hibernate实现了JPA规范!如图:

      Hiberante官方文档: https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html

      

    什么是spring data jpa?

      Spring家族官方文档:https://spring.io/projects/spring-data-jpa#learn

      Spring-Data-Jpa最新版本 2.2.2 官方文档:https://docs.spring.io/spring-data/jpa/docs/2.2.2.RELEASE/reference/html/#reference

      spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。

      Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。如图:

          

    Spring-Data-Jpa核心接口

      1)CrudRepository 继承了 Repository 接口,实现了CRUD的方法;

      2)PagingAndSortingRepository 继承了 Repository 接口,实现了分页排序的功能;

        3)JpaRepository 继承了 PagingAndSortingRepoistory 接口,实现了JPA规范的相关方法;

  • 相关阅读:
    web(零)---tornado使用
    web(一)----tornado nginx配置
    pb- 使用
    Python排序算法之直接插入排序
    敏捷测试中发现的一些问题及改进办法
    加密算法
    共享内存与存储映射(mmap)
    mysql索引的性能分析
    mysql索引
    Innodb的存储及缓存
  • 原文地址:https://www.cnblogs.com/blogtech/p/11887676.html
Copyright © 2011-2022 走看看