原文:https://www.imooc.com/article/19754?block_id=tuijian_wz

Spring Data JPA、MyBatis还有Hibernate有什么区别

2017-08-06 16:32:29 9459浏览
 字号

Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。要说差异,主要是比较的是 MyBatis 和 Hibernate。

性能考虑

由于 Hibernate 比 MyBatis 抽象封装的程度更高,理论上单个语句之心的性能会低一点(所有的框架都是一样,排除算法上的差异,越是底层,执行效率越高)。

但 Hibernate 会设置缓存,对于重复查询有一定的优化,而且从编码效率来说,Hibernate 的编码效果肯定是会高一点的。所以,从整体的角度来看性能的话,其实两者不能完全说谁胜谁劣。

从 ORM 角度考虑

Hibernate 是完备的 ORM 框架,是符合 JPA 规范的,但 MyBatis 不是。MyBatis 比单纯写 JDBC 肯定是方便一点,但无可避免还是要写SQL,且无法做到跨数据库 。Hibernate 使用 JPA 就可以无需考虑数据库的兼容性问题。

使用 Hibernate 的一个难点是,如何来设计对象之间的关系。如果是关系型数据库的话,表和表是通过外键来进行关联的。而在 ORM 中,则需要从面向对象的角度出发,来设计对象之间的关联关系。这个是需要思路上做一个转变的。

与 Spring 的集成角度考虑

Spring 以及 Spring Boot 官方都没有针对 MyBatis 有具体的支持,但对 Hibernate 的集成一直是有的。

但这并不表明 MyBatis 无法与 Spring Boot 集成,毕竟现在互联网企业,还是很流行使用MyBatis 和 Spring 。MyBatis 官方社区自身也是有 对 Spring \ Spring boot 集成做支持的,所以在技术上,两者都不存在问题。相关框架可以见 https://github.com/mybatis/spring 和https://github.com/mybatis/spring-boot-starter 。

最新文章

  1. ffmpeg-20161104[07,10,16,21,22,27,30]-bin.7z
  2. UnderScore源代码阅读1
  3. 【转】Web前端浏览器兼容初探
  4. 参考:(Java Selenium)Element is not visible to clcik
  5. MySQL配置
  6. 操作MySQL数据库
  7. android 开发 system/app目录下面有多个重复包名的apk,会不会冲突
  8. ZOJ 3607 Lazier Salesgirl(贪心)
  9. ActionScript接收socket服务器发送来的数据
  10. nyoj 1238 最少换乘(dijkstra)
  11. 浙江大学PAT上机题解析之3-05. 求链式线性表的倒数第K项
  12. Java基础——Instanceof 运算符
  13. 根据某字段将其他字段进行拼接的两种方法(SYS_CONNECT_BY_PATH及wm_concat)
  14. hbase_基本命令
  15. bond绑定两张物理网卡为一张逻辑网卡
  16. Vue SSR不可不知的问题
  17. python测试开发django-53.xadmin里Model分类管理(proxy=True)
  18. Unity资源打包之Assetbundle
  19. SQL select语句执行顺序
  20. HDU 4507 吉哥系列故事――恨7不成妻(数位DP+结构体)

热门文章

  1. 学习MVC之租房网站(十一)-定时任务和云存储
  2. 【第三组】心·迹 Alpha版本 成果汇报
  3. OneASP 安全公开课,深圳站, Come Here, Feel Safe!
  4. API接口安全设计(转)
  5. TSQL使用ADHOC访问Excle文件
  6. 获取指定时间的Date对象,IE和Chrome的区别(兼容IE)
  7. [Python_3] Python 函数 & IO
  8. 安全之路 —— C/C++实现后门的服务自启动
  9. iptables实战演练
  10. MySQL基础之 存储引擎