MyBatis的发展和选型
2019-09-17 10:41:10来源:博客园 阅读 ()
MyBatis的发展和选型
xlecho编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!
参考文章列表:
- ORM框架的简单介绍
数据层框架的发展史
JDBC编码的几大问题和MyBatis等框架的发展支持原因?
在最初编写JDBC连接数据库的时候,各种代码操作较为复杂,而且有很多缺陷。缺陷总结如下:
- 方法的封装问题
- 数据源的支持
- 映射结果集的接收和处理
- SQL语句硬编码
- 程序参数只能按照顺序传入(占位符)
- 没有实现实体类到数据库记录的映射
- 没有提供缓存等功能
工具类封装的出现解决了一部分问题
相应的工具类如:springjdbc、jdbcutils、Apache DbUtils等。这样的工具类主要解决了一下几个问题:
- 方法的封装
- 数据源的支持
- 映射结果集
工具类的响应实现解决了部分JDBC的缺陷,但是并不完美。每一次的改进和工具类的出现的就是我们框架的前身出现,框架也是工具。在越来越完善的解决方案的出现之后,ORM框架基本就成型了。同时解决了以上JDBC列出来的各种问题。
ORM框架,全称Object Relational Mapping,对象关系的映
面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
ORM框架的基本准则
- A. 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个Java类(模型),表的字段就是这个类的成员变量
- B. 精确:ORM使所有的MySQL数据表都按照统一的标准精确地映射成java类,使系统在代码层面保持准确统一
- C.易懂:ORM使数据库结构文档化。比如MySQL数据库就被ORM转换为了java程序员可以读懂的java类,java程序员可以只把注意力放在他擅长的java层面(当然能够熟练掌握MySQL更好)
- D.易用:ORM包含对持久类对象进行CRUD操作的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是讲sql查询全部封装成了编程语言中的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为Bug,方便编码风格的统一和后期维护。
最早的ORM框架hibernate
Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象!
- Hibernate 优势
- 类别到数据库表格中,并且不用编写任何代码。
- 为在数据库中直接储存和检索 Java 对象提供简单的 APIs。
- 如果在数据库中或任何其它表格中出现变化,那么仅需要改变 XML 文件属性。
- 抽象不熟悉的 SQL 类型,并为我们提供工作中所熟悉的 Java 对象。
- Hibernate 不需要应用程序服务器来操作。
- 操控你数据库中对象复杂的关联。
- 最小化与访问数据库的智能提取策略。
- 提供简单的数据询问。
- Hibernate 响应的一些问题
- 无法自定义SQL,优化相对困难
- 不制动动态的SQL
- 复杂的表关系会导致Hibernate开发难度
- 加载问题
什么是 MyBatis?
是一款面向对象和返回集关系的数据层封装,有效的减少jdbc的代码。
- 缺点:
- 不方便移植,数据库更换需要字段比较麻烦,需要改写sql
- 对开发人员所写的SQL依赖很强。
- 优点:
- 使用连接池对连接进行管理
- SQL和代码分离,集中管理
- 参数映射和动态SQL
- 结果集映射
- 缓存管理
- 重复SQL的提取
- 插件机制
- 手写sql,能够有效的精准把控查询的速度,便于优化查询速度
- mybatis不会对应用程序或者数据库的现有设计强加任何影响
- 通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。
- 保证名称相同,配置好映射关系即可自动映射或者,不配置映射关系,通过配置列名=字段名也可完成自动映射。
什么是 Spring Data JPA(本文JPA只写Spring Data JPA)
Spring Data JPA是更大的Spring Data系列的一部分,可以轻松实现基于JPA的存储库。此模块处理对基于JPA的数据访问层的增强支持。它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。
选择什么样的ORM框架参考:
- 业务相对简单项目可以使用Hibernate
- 需要灵活SQL的选择可以使用MyBatis(SQL过长和SQL很复杂的情况)
- 对性能要求比较高可以使用JDBC(如:我们写的项目很小,或者说就是需要几个接口,这个时候我们选择框架就会过于臃肿和复杂)
Sping JDBC可以和 ORM框架混合使用(这种情况很少,但是如果某些业务可能单独需要数据源对接某一个接口,这个时候可能要适配器兼容JDBC接入)
做一个有底线的博客主
原文链接:https://www.cnblogs.com/xlecho/p/11521653.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
- MyBatis整合双数据源 2020-06-04
- MyBatis缓存特性详解 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash