jpa和mybatis的区别是什么?

TheDisguiser 2020-07-29 09:00:55 java常见问答 12654

关于jpa与mybatis的区别小伙伴们有了解过吗?它们两个的争斗已久,小伙伴们知道它们各自有什么特点吗?下面就一起来看看。

Mybatis

是一个优秀的基于java的持久层框架,它是开源的,它的内部封装了jdbc,让开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂过程。

mybatis能通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。

Mybatis的本质是一种半自动化的ORM框架,它的前身是ibatis,编写时除了需要各种pojo及映射关系外,还需要一些sql语句。

Jpa

全称为:Java Persistence API, 我们也可以叫它java持久层应用接口,它不是框架,准确的说是一种ORM规范,之前比较流行的hibernate框架就是它的一种具体实现。

JPA它的主要目标之一就是提供更加简单的编程模型,如果想在JPA框架下创建实体和创建Java 类的话会十分的简单,因为它没有任何的约束和限制,开发者只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则与设计模式的要求,开发者可以很轻松地掌握。JPA是基于非侵入式原则设计的,因此可以很容易的与其它框架或容器集成。

hibernate作为JPA的一种实现,jpa的注解对它来说已经是核心了,hibernate只提供了一些补充而已,并不是两套注解。

两者区别

应用场景

一般来说,传统公司及一些个人开发者是喜欢用jpa,因为它们需求迭代极慢,项目一般做完就不再改动了,所以用hibernate就可以一劳永逸,但hibernate因为容易添加关联关系或者开发者不了解优化导致越改越糟糕,所以一般更新快的互联网公司是不喜欢使用的。

mybatis因为更加灵活的开发迭代模式便决定了它一定是互联网公司的,首先,它每一次的修改都不会带来性能上的下降,再来,mybatis较hibernate更为简单学习,最后,它远比hibernate灵活快捷。

特点

mybatis是一个半自动化的持久层框架,相较于自动hibernate更为灵活可控;

mybatis的学习成本低于hibernate。

使用hibernate需要对它有这足够深入的了解,尤其是缓存方面,作为一个持久层框架,性能还是第一位的。

hibernate具有三级缓存,一级缓存默认是开启的,二级缓存需要手动开始并配置优化,三级缓存可以整合业界流行的缓存技术:redis,ecache等等。

jpa是一种规范,hibernate也是遵从这种规范;

springDataJpa是对repository的封装,简化了repository的操作。

总结:

相对而言,jpa的学习成本比mybatis略高,所以一般需求变化极大的公司都不会使用jpa,但一些项目变化不大的使用jpa就能保证性能,所以它们两者之间的性能差距主要还是看需求吧。

以上就是本篇文章的所有内容,对于一些java常见问题及解决方法还有疑问的话,欢迎关注我们网站了解详情。

推荐阅读:

jpa多表关联查询,jpa是怎么实现多表查询?

Springdatajpa是什么?有什么作用?

jpa框架,jpa优势是什么?