创建于: 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集成 |
发表回复