原文:https://www.imooc.com/article/19754?block_id=tuijian_wzgit
Spring Data JPA 能够理解为 JPA 规范的再次封装抽象,底层仍是使用了 Hibernate 的 JPA 技术实现。要说差别,主要是比较的是 MyBatis 和 Hibernate。github
性能考虑因为 Hibernate 比 MyBatis 抽象封装的程度更高,理论上单个语句之心的性能会低一点(全部的框架都是同样,排除算法上的差别,越是底层,执行效率越高)。算法
但 Hibernate 会设置缓存,对于重复查询有必定的优化,并且从编码效率来讲,Hibernate 的编码效果确定是会高一点的。因此,从总体的角度来看性能的话,其实二者不能彻底说谁胜谁劣。spring
从 ORM 角度考虑Hibernate 是完备的 ORM 框架,是符合 JPA 规范的,但 MyBatis 不是。MyBatis 比单纯写 JDBC 确定是方便一点,但无可避免仍是要写SQL,且没法作到跨数据库 。Hibernate 使用 JPA 就能够无需考虑数据库的兼容性问题。数据库
使用 Hibernate 的一个难点是,如何来设计对象之间的关系。若是是关系型数据库的话,表和表是经过外键来进行关联的。而在 ORM 中,则须要从面向对象的角度出发,来设计对象之间的关联关系。这个是须要思路上作一个转变的。缓存
与 Spring 的集成角度考虑Spring 以及 Spring Boot 官方都没有针对 MyBatis 有具体的支持,但对 Hibernate 的集成一直是有的。mybatis
但这并不代表 MyBatis 没法与 Spring Boot 集成,毕竟如今互联网企业,仍是很流行使用MyBatis 和 Spring 。MyBatis 官方社区自身也是有 对 Spring \ Spring boot 集成作支持的,因此在技术上,二者都不存在问题。相关框架能够见 https://github.com/mybatis/spring 和https://github.com/mybatis/spring-boot-starter 。框架