创建于: 9月 22, 2015 分类: 笔记 By 胖爷
1 概念和定位
| MyBatis | Hibernate | Spring Data Jpa |
|---|
| 半自动ORM(Data Mapper)框架,需要手写SQL,只简化了JDBC操作 | 全自动ORM框架(Active Recorder),自动生成SQL语句并执行 | 不是ORM只是基于JPA规范的Repository抽象 |
| 通过XML或注解配置SQL,将JAVA与数据库记录映射 | 在JPA规范出现之前就已存在,以Session Factory为核心 | 默认使用Hibernate做为实现 |
| 适合需要精细控制SQL的场景 | 提供对象关系(ORM)映射,将POJO映射到数据库表 | 目标是简化数据库访问层代码,只需定义接口即可自动实现查询 |
2 核心特性对比
| 特性 | MyBatis | Hibernate | Spring Data Jpa |
|---|
| SQL控制 | 手动编写SQL | 自动生成SQL | 自动生成SQL |
| 学习曲线 | 较低 | 较高 | 中等 |
| 性能优化 | 更易优化 | 需要调优 | 需要调优 |
| 数据库迁移性 | 较差 | 较好 | 较好 |
| 复杂查询支持 | 优秀 | 一般 | 一般 |
| 开发效率 | 中等 | 高(简单CRUD) | 最高(简单CRUD) |
3 适应场景
| MyBatis | Hibernate | Spring Data Jpa |
|---|
| 需要景旭控制SQL的项目 | 传统企业级应用开发 | 基于Spring 框架的快速开发 |
| 复杂多表关联关系查询 | 需求变更不频繁的项目 | 基于CRUD操作居多的微服务 |
| 互联网公司快速迭代项目 | 需要高度对象化思维的项目 | 西药减少样板代码的项目 |
4 优缺点对比
优点
| Mybatis | Hibernate | Spring Data Jpa |
|---|
| SQL灵活控制、便于优化 | 全自动ORM,开发效率高 | 极大简化DAO层开发 |
| 学习成本低,适合有SQL经验的开发者 | 提供缓存机制 | 与Spring生态无缝集成 |
| 性能通常较好 | 数据库移植性好 | 支持多种JPA集成 |
发表回复