谈谈你对 hibernate,mybatis,springJPA 的理解,底层用到了哪些 java 的基础技术,有什么区别,各自的性能如何?【面试题详解】

今天爱分享给大家带来谈谈你对 hibernate,mybatis,springJPA 的理解,底层用到了哪些 java 的基础技术,有什么区别,各自的性能如何?【面试题详解】,希望能够帮助到大家。
1.概念:
Hibernate :Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻
量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。着力
点对象与对象之间关系
Mybatis:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software
foundation 迁移到了 google code,并且改名为 MyBatis 。Mybatis 着力于 POJO 与 SQL 之间
的映射关系
Spring Data:Spring Data 是一个用于简化数据库访问,并支持云服务的开源框架。其主要
目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计算数据服务
2.开发的难度:
Hibernate 的开发难度要大于 Mybatis、Spring Data。主要是由于 Hibernate 封装了完整的
对象关系映射机制,以至于内部的实现比较复杂、庞大,学习周期较长。
Mybatis 主要依赖于 SQL 的编写与 ResultMap 的映射。
Spring Data 易上手,通过命名规范、注解查询简化查询操作。
3.查询区别:
简单查询:Hibernate 提供了基础的查询方法,也可以根据具体的业务编写相应的 SQL;
Mybatis 需要手动编写 SQL 语句,Spring Data 继承基础接口,可使用内置的增删改查方
法。
高级查询:Hibernate 通过对象映射机制,开发者无需关心 SQL 的生成与结果映射,专注业
务流程;Mybatis 需要通过手动在 XML 文件中编写 SQL 语句以及 ResultMap 或者注解,Spring
Data 提供了命名规范查询和注解查询更简便的编写想要的 SQL。
4.数据库的扩展性:
Hibernate 与数据库具体的关联都在 XML 中,所以 HQL 对具体是用什么数据库并不是很
关心。
Mybatis 由于所有 SQL 都是依赖数据库书写的,所以扩展性,迁移性比较差。
Spring Data 与数据具体的关联可以通过命名规范查询、注解查询,无需关心数据库的差
异,但是通过本地化 SQL 查询的话,就不易扩展。
5.缓存机制:
相同点:Hibernate 和 Mybatis 的二级缓存除了采用系统默认的缓存机制外,都可以通过
实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。
不同点:Hibernate 的二级缓存配置在 SessionFactory 生成的配置文件中进行详细配置,
然后再在具体的表-对象映射中配置是那种缓存。
MyBatis 的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同
的表可以自定义不同的缓存机制。并且 Mybatis 可以在命名空间中共享相同的缓存配置和实
例,通过 Cache-ref 来实现。
Spring Data 可以通过自己的缓存或者第三方缓存方案,配置满足自己业务需要的缓存行
为。
6. 总结:
Hibernate 对数据库提供了较为完整的封装,封装了基本的 DAO 层操作,有较好的数据库
移植性
Mybatis 可以进行更细致的 SQL 优化,查询必要的字段,但是需要维护 SQL 和查询结果集
的映射,而且数据库的移植性较差,针对不同的数据库编写不同的 SQL, Spring Data JPA 极大的简化了数据库访问,可以通过命名规范、注解的方式较快的编写
SQL。

人已赞赏
Java

action 是单实例还是多实例,为什么?【面试题详解】

2020-12-10 15:51:56

Java

hibernate 怎么实现类之间的关系,他们的关系有哪一些?【面试题详解】

2020-12-10 15:53:03