MyBatis_1
来源:互联网 发布:远程教育软件哪家好 编辑:程序博客网 时间:2024/06/06 09:12
传统的JDBC步骤
- 连接数据库,注册驱动和数据库信息
- 操作Connection,打开Statement对象
- 通过Statement执行SQL,返回结果到ResultSet对象
- 使用ResultSet读取数据,然后通过代码转化为具体的POJO对象
- 关闭数据库相关资源
以上差不多就是传统JDBC的操作步骤,它存在一些弊端:
- 工作量相对较大
先连接,然后处理JDBC底层事务,处理数据类型,还需操作Connection对象,Statement对象和ResultSet对象去拿数据。
- 需要对JDBC编程可能产生的异常进行捕获处理并正确的关闭连接
为了简化数据库操作ORM模型出现...
ORM:数据库的表和简单Java对象的映射关系模型。
后面不在引申,直接看重点吧...
什么是MyBatis?
MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
MyBatis和 Hibernate
- 开发速度
- Hibernate真正掌握要比MyBatis困难 , 而且Hibernate比MyBatis更加重量级
- MyBatis相对简单,上手快,但相对简陋
- 开发工作量
- MyBatis需要手动编写SQL语句 , 可以按照需求操作指定字段 ,提高程序的效率.
- Hibernate也可以通过写SQL语句操作指定字段,但这样破坏了Hibernate的封装以及简洁性.
- 移植性 /扩展性
- Hibernate与具体数据库的关联只需在XML中配置即可,所有的HQL语句与具体使用的数据库无关 , 移植性好
- MyBatis项目中的SQL语句都是依赖所用数据库的 , 所以移植性/扩展性较差.
- 优势对比
- MyBatis
- 可以进行更为细致的SQL优化,减少操作字段
- 容易掌握,Hibernate门槛较高
- 小巧、方便、高效、简单、直接、半自动化
- MyBatis
- Hibernate
- DAO层开发相对MyBatis简单,MyBatis需要维护SQL和结果映射.
- Hibernate对对象的维护和缓存要比MyBatis好,对增删查改的对象维护更方便.
- Hibernate移植性好,MyBatis移植性不好,不同的数据库需要写不同的SQL.
- Hibernate有更好的二级缓存机制,可以使用第三方缓存,MyBatis本身提供的缓存机制不佳.
- 强大、方便、高效、复杂、间接、全自动化
- Hibernate的缺点
- 全表映射不方便,比如更新时需要发送所有的字段
- 无法根据不同的条件组装不同的SQL
- 对多表关联和复杂SQL查询支持较差.
- 不能支持有效存储过程
- 虽然有HQL,但是性能差,大型互联网系统往往需要优化SQL,而Hibernate做不到.
参考 :http://www.mybatis.org/mybatis-3/zh/index.html
http://blog.csdn.net/jiuqiyuliang/article/details/45378065
https://www.zhihu.com/question/21104468
<深入浅出MyBatis技术原理与实战>
写在最后,这篇文章以及后续的MyBatis学习笔记文章,都是在阅读<深入浅出MyBatis技术原理与实战>一书,或网上其他有关MyBatis资料中整理的。
后续不在标注内容出处.....
0 0
- MyBatis_1
- MyBatis_1
- event.clientX event.clientY 鼠标移动位置
- 关于无法导入unity资源包的问题
- 多态
- 杭电--2069--Coin_Change(简单枚举题)
- Java设计模式:观察者模式以及Servlet中的Listener
- MyBatis_1
- 【进阶】MySQL中的子查询和联合查询
- SVM人脸识别
- 解决Windows安装解压版MySQL出现服务正在启动-服务无法启动的问题
- 在SSH框架中注入HibernateTemplate进行分页等相关查询
- 单例模式.md
- State与Transition之Transition
- 面试中被问到的概率题
- 错误pycurl.error: (60, 'SSL certificate problem: unable to get local issuer certificate')解决方案