首页 > 其他分享 >SpringData JPA、Hibernate、Mybatis三者的区别

SpringData JPA、Hibernate、Mybatis三者的区别

时间:2023-10-17 22:01:10浏览次数:31  
标签:缓存 SpringData JPA 数据库 Hibernate SQL 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需要具有很强的经验和能力才行。

标签:缓存,SpringData,JPA,数据库,Hibernate,SQL,Mybatis
From: https://www.cnblogs.com/yifanSJ/p/17770815.html

相关文章

  • 通过JPA API访问数据库的方法和范例
    HibernateAPI和JPAAPI中主要接口之间有一些对应关系,例如:JPAAPI-----------------------HibernateAPIEntityManagerFactory-----SessionFactoryEntityManager----------------SessionEntityTransaction-------------TransactionSessionFactory接口在JPAAPI中的对等接口......
  • Hibernate
    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合......
  • 「Java开发指南」如何在MyEclipse中使用JPA和Spring管理事务?(一)
    本教程中介绍一些基于JPA/spring的特性,重点介绍JPA-Spring集成以及如何利用这些功能。您将学习如何:为JPA和Spring设置一个项目逆向工程数据库表来生成实体实现创建、检索、编辑和删除功能启用容器管理的事务MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:742336981......
  • springboot整合jpa sqlite
    前言最近有关项目需要用到SQLITE,我先是使用Mybatis去连接SQLITE,然后发现SQLITE对BLOB支持不好,在网上看到相关教程可以写mapper.xml文件,加一个handler解决BLOB支持的问题,但是又发现Mybatis还对SQLITE的自增主键不支持,不能正常自增主键,而且Mybatis读取几十MB的BLOB文件很慢,最后换到......
  • Redis的Java客户端——SpringDataRedis、RedisTemplate、StringRedisTemplate
     版权声明:本文为CSDN博主「我爱布朗熊」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_51351637/article/details/127502799一、初步了解SpringDataRedisSpringData是Spring中数据操作的模块,包括对各种数据库的集......
  • hibernate需要的jar
    1.hibernate3.jar、commons-beanutils-1.7.0.jar、commons-collections-3.2.jar、commons-lang-2.3.jar、commons-logging-1.0.4.jar、dom4j-1.6.1.jar、antlr-2.7.6.jar、ezmorph-1.0.3.jar(EZMorph是一个简单的java类库用于将一种对象转换成另外一种对象。......
  • struts2+hibernate+spring+jquery返回json List列表
    1.引入包:struts2-json-plugin-2.1.8.1.jarjson-lib-2.1.jarcommons-collections-3.2.1.jarcommons-beanutils-1.8.2.jarcommons-lang-2.4.jarezmorph-1.0.6.jar,其他的包略,这几个包是返回json形式的数据必须的2.<packagename="default"extends="js......
  • 使用 Spring Data JPA 简化 JPA 开发
    从一个简单的JPA示例开始本文主要讲述SpringDataJPA,但是为了不至于给JPA和Spring的初学者造成较大的学习曲线,我们首先从JPA开始,简单介绍一个JPA示例;接着重构该示例,并引入Spring框架,这两部分不会涉及过多的篇幅,如果希望能够深入学习Spring和JPA,可以根据本文最后提......
  • Spring Data JPA是什么
    SpringDataJPA是SpringFramework的一个子项目,它简化了使用JavaPersistenceAPI(JPA)进行数据库访问的开发。JPA是JavaEE标准的一部分,用于管理和持久化Java对象到关系型数据库中。SpringDataJPA通过提供一组工具和抽象,使得开发人员可以更轻松地使用JPA进行数据访问。 以下......
  • hibernate缓存相关
    hibernate缓存相关hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需......