SpringData JPA,Hibernate,Mybatis三者的区别

1.ORM 考虑

SpringData JPA: :只是接口,一种规范,具体的实现还是ORM做的
Hibernate: 是完备的 ORM 框架,是符合 JPA 规范的,Hibernate 使用 JPA 就可以无需考虑数据库的兼容性问题。
MyBatis: 不完备的ORM框架,比单纯写 JDBC 肯定是方便一点,但无可避免还是要写SQL,且无法做到跨数据库 。
补:
使用 Hibernate 的一个难点是,如何来设计对象之间的关系。如果是关系型数据库的话,表和表是通过外键来进行关联的。而在 ORM 中,则需要从面向对象的角度出发,来设计对象之间的关联关系。这个是需要思路上做一个转变的。

2.业务查询的区别

Spring Data JPA: 有基础的接口api ,可使用内置的增删改查方法
hibernate: 有基础的查询方法,也可以根据具体的业务编写自定义的SQL
mybatis: 需要手动写SQL,支持注解及xml的形式

3.可拓展性

Spring Data JPA: 通过命名规范查询、注解查询规范数据类型,无需关心数据库的差异。(注:但是通过本地化SQL查询的话,就不易扩展)
hibernate: 与数据库具体的关联都在XML中,不用关心数据库类型。
mybatis: 所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差

4.对缓存

Spring Data JPA: 可以通过自己的缓存或第三方缓存
hibernate: Hibernate有三级缓存,而二级缓存是在SessionFactory生成的配置文件中配置,然后再在具体的表-对象映射中配置其缓存类型
mybatis: 具有二级缓存,二级缓存在每个具体的表-对象映射中配置,针对不同的表可以自定义不同的缓存机制。可通过Cache-ref实现在命名空间中共享相同的缓存配置和实例
补:Hibernate和Mybatis的二级缓存也可以通过实现你自己的缓存或其他第三方缓存方案,创建适配器来完全覆盖其原缓存

5.难度性

Spring Data JPA: 易上手,通过命名规范、注解查询简化查询操作。
Hibernate: 开发难度要大于Mybatis、Spring Data。主要是由于Hibernate封装了完整的对象关系映射机制,以至于内部的实现比较复杂、庞大,学习周期较长。
Mybatis: 主要依赖于SQL的编写与ResultMap的映射。

总述

Spring Data JPA 极大的简化了数据库访问,可以通过命名规范、注解的方式较快的编写SQL。

Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的缺点是学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值