浅谈JPA,Hibernate及Spring data JPA

一、背景

        公司项目架构更新迭代,升级springboot1.X到springboot2.3.12,DB交互这块还是引用先前的ORM持久层的框架Hibernate。从spring-boot-start-jpa-data内所关联依赖的版本来看,Hibernate已经对应升级到了5.4.32.Final,说到Hibernate又不得说其定义规范的JPA。

二、概要

1、JPA:

        全称Java Persistence API,SUN公司Java2E1.5后所提出的Java持久化的接口规范,注:仅仅是一种规范。我们都知道不同的数据库厂商都有自己的实现类,后来统一规范也就有了数据库驱动,我们使用Java来操作DB时,底层使用的都是JDBC,它就是操作不同数据库的一种规范。通过其提供的API就可以直接访问数据库,而JPA也是类似的道理。

具体包含哪些规范:

        1. ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
        2. JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发人员不用再写SQL了
        3. JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。(实际开发中并不常见)

2、Hibernate

        Hibernate是JPA规范的具体实现、对象映射模型,是ORM类型的持久层框架。在3.2开始兼容JPA,主要是通过三个组件来实现的。hibernate-annotation、hibernate-entitymanager和hibernate-core。

        (1)hibernate-annotation是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及 Hibernate自身特殊功能的annotation。

        (2)hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能。

        (3)hibernate-entitymanager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。

3、Spring Data JPA 

        Spring Data JPA可以理解为JPA的规范,在其基础上封装了一套更多的可用接口,便于其他ORM框架的直接引用,提高了开发效率。它只是一个抽象层,需要JPA提供实现程序,其底层就是使用Hibernate来实现。

三、扩展

        MyBatis也是持久层框架但没有实现JPA,是Sql Mapping框架,和ORM框架设计思路并不一样,前者面向Sql,后者面向对象。

四、总结

        一句话:JPA是一种定义规范,Spring Data JPA是JPA的规范,底层实现用的是Hibernate。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敬业丨小爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值