栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ORM、JPA、Hibernate、MyBatis之间的关系梳理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ORM、JPA、Hibernate、MyBatis之间的关系梳理

关于ORM框架

ORM(Object Relational Mapping)对象关系映射(双向),顾名思义可以理解为是在对象层面将对象映射到数据库的一种技术。实体对象和数据库的双向映射 面向对象的概念。

他包括两个方面:对象 --> 关系 和 关系 --> 对象;像Hibernate就是一个完整的ORM框架,他支持用对象模型来操作数据库,完全脱离了sql。而MyBatis是不完整的ORM框架,因为他只实现了关系 --> 对象之间的映射,他想要操作数据库还是得用sql。Data Mapper framework

JPA是ORM框架标准,主流的ORM框架都实现了这个标准。需要注意的一点是主流持久层框架MyBatis没有实现JPA规范,他和ORM框架的设计思路完全不一样,MyBatis是拥抱sql,而ORM则更靠近面向对象,不建议写sql,实在要写推荐你写hql代替。Mybatis是sql mapping框架而不是ORM框架,当然ORM和Mybatis都是持久层框架。

小记:Hibernate和Spring Data JPA 是完全的ORM框架,因为他们都是纯粹的面向对象的操作,关系和对象的双向映射,不用写sql,移植性更好,但是不够灵活,不能进行sql调优。而MyBatis是不完全的ORM框架,因为他是半自动的(只有关系到对象之间的映射),是不支持纯粹的面向对象操作,需要开发人员编写sql,这样的好处是灵活,可以进行sql调优。

那JPA又是什么呢?

JPA(Java Persistence API)根据名字直译过来就算是Java持久层的API,是ORM的一种规范,并不是ORM框架,这里要与Hibernate等ORM框架进行区分。JPA之所以诞生是为了统一各个ORM框架的使用,使他们共同约定要执行JPA规范。

个人认为应用JPA规范最大的好处就是操作实体类来执行CRUD的操作,即通过对象解耦SQL语句。面向对象的操作。

一般来说JPA会默认使用Hibernate作为他的ORM框架,因为他俩整合的最好(MyBatis没有实现JPA规范)。所以,一般使用Spring Data JPA即会使用hibernate。hibernate是对JDBC的一种轻量级封装,他最大的特点就是全自动,几乎不需要写sql语句,用面向对象的思想去操作数据库,降低了对象和数据库类型(mysql,orcale)的耦合性,使其迁移性更高。
所以目前工作中框架上用的JPA其实就是实现了JPA规范的hibernate框架。自己学习中发现的Spring Data JPA接口也是如此。

Spring Data JPA可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。所以Spring Data JPA是一个ORM框架。

由此得出结论:没有过时的持久层框架,每个持久层框架各有利弊,根据需要选择一个适合自己架构的框架才会达到事半功倍的效果。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号