一、JPA、Hibernate、Mybatis简单了解
1. JPA本身是一种ORM规范,不是ORM框架,由各大ORM框架提供实现。
1. Hibernate是目前最流行的ORM框架,设计灵巧,文档丰富(完全自动操作),只是性能不好控制(自己去控制性能,不是很好控制),Hibernate是一个完整的ORM框架,常规CRUD我们不需要写一句SQL。
1. MyBatis本是apache的一个开源项目iBatis,提供的持久层框架包括SQL Maps和Dao,允许开发人员直接编写SQL(更灵活),MyBatis 并不是一个完整的ORM框架,因为我们还需要自己去写全部SQL。
二、JPA 和Hibernate 和 Mybatis的区别
1. JPA规范,各大ORM框架实现这个规范,可以自动建表。
2. Hibernate是完整的ORM,不需要我们写sql,框架比较重,学习成本比较高,性能不好控制,功能强大且文档丰富。
3. Mybatis不是完整的ORM,程序员需要自己去写全部的SQL,轻量级框架,学习成本低,性能好控制,不能自动建表。
三、各自特点
1. MyBatis官方文档就说了他是一个半自动化的持久层框架,相对于按自动的Hibernate 更加灵活可控。
2. MyBatis的学习成本低于Hibernate 。
3. 使用Hibernate 需要对他有深入的了解,尤其是缓存方面,作为一个持久层框架,性能还是第一位的。
Hibernate 具有三级缓存,一级缓存默认是开启的,二级缓存需要手动开始并配置优化,三级缓存可以整合业界流行的缓存 技 术:redis,ecache等等。
4. Hibernate 在关联查询中的懒加载(在开发中,还是不建议去过多使用外键去关联操作)。
5. JPA是一种规范,Hibernate 也是遵从这种规范。
6. SpringDataJpa是对repository(仓储)的封装,简化了repository(仓储)的操作。
四、应用场合:
传统公司、部分个人开发者喜欢用jpa,而互联网公司更青睐于MyBatis。
原因:
1. MyBatis更加灵活,开发迭代模式决定了他是互联网公司的首先;每一次的修改不会带来性能上的下降。
2. 传统公司需求迭代速度慢、项目改动小,hibernate可以做到一劳永逸。但Hibernate 容易因为添加关联关系或者开发者不了解优化导致项目,造成越改越糟糕。
五、加油站
1. JPA与MyBatis相比,JPA对于数据的查询速度要略胜于MyBatis,但从对数据的操控(CRUD)来说MyBatis又略胜于JPA。
2. 由于MyBatis是半自动化的持久层框架,对于数据的查询可根据实际业务需求进行定制化开发,譬如我只需要某张表的部分字段信息,MyBatis便可通过手动配置避免将整条记录都查出来。但对于Hibernate 来说,由于是一个完整的ORM框架,往往会带出多余的数据,虽说也可单独通过hql做控制,但毕竟这是MyBatis的强项。