Spring Data JPA、MyBatis还有Hibernate有什么区别
原文:https://www.imooc.com/article/19754?block_id=tuijian_wz
Spring Data JPA、MyBatis还有Hibernate有什么区别
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 。
最新文章
- ffmpeg-20161104[07,10,16,21,22,27,30]-bin.7z
- UnderScore源代码阅读1
- 【转】Web前端浏览器兼容初探
- 参考:(Java Selenium)Element is not visible to clcik
- MySQL配置
- 操作MySQL数据库
- android 开发 system/app目录下面有多个重复包名的apk,会不会冲突
- ZOJ 3607	 Lazier Salesgirl(贪心)
- ActionScript接收socket服务器发送来的数据
- nyoj 1238 最少换乘(dijkstra)
- 浙江大学PAT上机题解析之3-05. 求链式线性表的倒数第K项
- Java基础——Instanceof 运算符
- 根据某字段将其他字段进行拼接的两种方法(SYS_CONNECT_BY_PATH及wm_concat)
- hbase_基本命令
- bond绑定两张物理网卡为一张逻辑网卡
- Vue SSR不可不知的问题
- python测试开发django-53.xadmin里Model分类管理(proxy=True)
- Unity资源打包之Assetbundle
- SQL select语句执行顺序
- HDU 4507 吉哥系列故事――恨7不成妻(数位DP+结构体)
热门文章
- 学习MVC之租房网站(十一)-定时任务和云存储
- 【第三组】心·迹 Alpha版本 成果汇报
- OneASP 安全公开课,深圳站, Come Here, Feel Safe!
- API接口安全设计(转)
- TSQL使用ADHOC访问Excle文件
- 获取指定时间的Date对象,IE和Chrome的区别(兼容IE)
- [Python_3] Python 函数 &; IO
- 安全之路 —— C/C++实现后门的服务自启动
- iptables实战演练
- MySQL基础之 存储引擎