JPA、Hibernate和Mybatis
一、JPA、Hibernate和Mybatis的介绍
JPA:Java Persistence API.JPA通过JDK 5.0注解-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA是JavaEE中的标准。JPA标准只提供了一套规范,需要有JPA的具体实现,Hibernate实现了JPA2.0标准,所以我们在用JPA的时候,其实用的是Hibernate提供了JPA2.0规范的实现;JPA还有其他实现,比如OpenJPA,各个JPA的实现在使用细节上有一些不同,使用时需要注意;
Hibernate是一个面向对象的持久化框架
- 持久化:
1,把内存中的Java对象保存到存储设备上面;
2,最好的解决方案:把对象持久化到数据库里面;
3,在Java里面,把对象持久化到数据库只能使用JDBC; - 框架:
1,框架是一个半成品,是一个脚手架,它可以方便的,快速的辅助开发人员针对某一领域进行快速开发;
2,使用框架,提高开发效率,减少重复代码,提高应用安全性,减少应用的bug;
3,框架一定是按照开发人员告诉他的方式去运行,交流的工具就是框架的配置文件或者约定; - 面向对象:
一个面向对象的持久化框架,在代码当中一定不可能出现关系的概念;
Mybatis它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低
总的来说JPA是JAVA官方提供的一套对象持久化的规范。Hibernate是基于JPA规范的一个ORM框架。MyBatis算不上ORM框架,不过是一个封装了JDBC的持久化框架。
二、JPA、Hibernate和Mybatis的区别
(一)、应用场合:
传统公司、迭代比较少和平稳的项目喜欢用JPA和Hibernate;而需要快速迭代的快速发展的项目更青睐于mybatis。
原因:
1、mybatis更加灵活,每一次的修改不会带来性能上的下降。
2、需求迭代速度慢、项目改动小,hibernate可以做到一劳永逸;hibernate容易因为添加关联关系,造成改造的成本比较大
(二)、各自特点:
1、mybatis是一个半自动化的持久层框架,相对于按自动的hibernate更加灵活可控;
2、mybatis的学习和集成的成本都比hibernate低。
3、使用hibernate需要对他有深入的了解,尤其是缓存方面,作为一个持久层框架,性能还是第一位的。hibernate具有三级缓存,一级缓存默认是开启的,二级缓存需要手动开始并配置优化,三级缓存可以整合业界流行的缓存技术:redis,ecache等等。
4、hibernate在关联查询中的懒加载。(在开发中,还是不建议去过多使用外键去关联操作)
5、jpa是一种规范,hibernate也是遵从这种规范
三、JPA、Hibernate和Mybatis的使用
JPA和Hibernate的使用
JPA和Hibernate的使用可以参考我之前的文章,有对Hibernate的使用(除了缓存之外的使用,后续会更新)做了较为详细的说明。JPA的使用可以参考:https://blog.csdn.net/qq_51308214/article/details/125165747
JPA和Hibernate对比:
1,JPA只是Hibernate的一个子集(支持JPA只是Hibernate中的一个功能);
2,Hibernate在对象状态,对象映射,对象关系,查询语句上和JPA80%以上都雷同;
3,Hibernate本身更依赖XML配置,而JPA完全使用Annotation实现;
4,Hibernate的API和JPA的API有一些区别(关键对象,对象方法);
Mybatis和MybatisPlus的使用
后续会更新相关的文章