目录
1.ORM 考虑
SpringData JPA
Hibernate
MyBatis
2.业务查询的区别
Spring Data JPA
Hibernate
Mybatis
3.可拓展性
Spring Data JPA
Hibernate
Mybatis
4.对缓存
Spring Data JPA
Hibernate
Mybatis
5.难度性
Spring Data JPA
Hibernate
Mybatis
总述
Spring Data JPA
Mybatis
Hibernate
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需要具有很强的经验和能力才行。
---------------------
作者:C1Zer0WN
来源:CSDN
原文:https://blog.csdn.net/qq_36543562/article/details/113244030
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件