JPA: java持久层api,是 Java Persistence API 的简写,是一种规范。
Hibernate是JAP的具体实现,全自动型的ORM对象关系映射框架。
Spring Data JPA就更加牛逼了,是JPA的数据访问抽象,什么意思?
也就是说使用Spring Data,你可以使用Hibernate,Eclipse Link或任何其他JPA提供程序。
属于Hibernate的上一级。并且Spring Data默认内部就是hibernate实现。如果需要加入Eclipse Link,需要稍作改动。
MyBatis和Hibernate(Spring Data JPA)相比
-
相同点:
- 都是持久层对象关系映射框架
- 都内置了缓存
-
不同点:
- Hibernate是全自动的,MyBatis是半自动的。
全自动: 可以不用写sql,默认内部就帮你实现了,而且改了实体类属性,可以自动把你该数据库字段。 - Hibernate由于不用写sql所以是跨数据库的,而MyBatis是统一的xml文件来进行写sql
- MyBatis学习门槛较为低一点,可控性更强一点。Hibernate学习成本高一点。
- Hibernate是全自动的,MyBatis是半自动的。
-
总结:
还是Mybatis比较好,因为更好管理以及维护性更强一点,sql更加灵活,我觉得mybatis更具有java面向对象思想。
同时mybatis也支持各种条件查询(if-else)。
而hibernate如果要支持复杂的条件的话,那就必须要把sql写在java代理里,那就真的太恶心了,无法忍受。
而且数据表关系复杂,你再使用hibernate,那估计自杀的心都有了哦。