Mybatis(一):认识Mybatis

从JDBC的传统编程方式出发,介绍了其繁琐的操作流程及存在的问题,随后引入了ORM模型概念并详细对比了Hibernate与MyBatis这两种流行的ORM框架。Hibernate通过全表映射简化了开发流程,但在复杂查询及性能优化方面存在不足;MyBatis作为一种半自动映射框架,允许开发者手动编写SQL并提供动态SQL支持,更适合复杂查询与性能调优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、传统的JDBC编程
JDBC是由SUN公司提出的一系列规范,但它只定义了接口规范,具体的实现是交由各个数据库厂商去实现的,因为每个数据库都有特殊性,这些Java规范没有办法确定,所以JDBC是一种典型的桥接模式。
JDBC访问数据库大致分为以下几步:
1、使用JDBC编程需要连接数据库,注册驱动和数据库信息.
2、操作Connection。打开Statement对象。
3、通过Statement执行SQL,返回结果到ResultSet对象。
4、使用ResultSet读取数据,然后通过代码转化为具体的POJO对象。
5、关闭数据库相关资源。
弊端:
1、工作量大,需要先链接,然后处理JDBC底层事务, 处理数据类型,还要操做Connection
对象、Statement对象和ResultSet对象去拿到数据,并准确关闭。
2、要多JDBC可能产生的异常进行捕捉处理并且要正确的关闭资源,对于简单的SQL在JDBC
中尚如此复杂,何况更复杂的应用。

二、ORM模型
由于JDBC存在缺陷,在实际工作中很少使用JDBC进行变成,于是提出了对象关系映射(ORM,Obejct Relational Mapping)。
ORM模型就是数据库的表和简单Java对象(POJO)的映射关系模型,它主要解决数据枯数据与POJO对象的相互映射,通过这个映射关系可以将数据库中的数据迅速转化为POJO,写出通俗易懂的程序。

三、Hibernate
一问世就成了Java世界首选的ORM模型,它建立在POJO和数据库表模型的直接映射1关系联系上。
它提供的是一种全表映射的模型,相对来说Hibernate对于JDBC的封装程度比较高,我们不需要编写SQL,只需要使用HQL语言就可以了。
Hibernate产生的SessionFactory,他是全局的,一次创建,到处引用,相对于JDBC的好处:
1、消除了代码的映射规则,它全部被分离到xml或者注解配置。
2、 无需再管理数据库连接,他也配置在XML里面。
3、一个会话中,不需要操作多个对象,只操作Session对象。
4、关闭资源只需要关闭一个Session便可。
Hibernate的优势在配置了映射文件和数据库链接文件后,Hibernate就可以通过Session操作,非常容易,消除JDBC的大量代码,大大提高了编程的简易性和可读性,并且它还提供级联、缓存、映射、一对多等功能,以便使用。这些优势让Hibernate成为了时代的主流框架,因为Hibernate是全表映射,可以通过HQL去操作POJO来操作数据库的数据。
Hibernate作为全表映射字段,对于动态映射关系,以及使用存储过程它是无法适应的,这些都是致命的,最致命的问题是性能,Hibernate屏蔽了SQL,意味着只能全表映射,但一张表可能会有上百个字段,而感兴趣的字段只有一两个,尤其是大型的互联网应用,对传输数据有严格规定,不能浪费带宽的场景下更为明显,对于有很复杂的场景需要关联多张表,Hibernate全表逐级取对象的方法更不可取,如果需要SQL优化,Hibernate无法做到。
总结一下Hibernate的缺点:
1、全表映射带来不便,比如更新是需要发送全部字段。
2、无法根据不同的条件组装不同的SQL。
3、对多表关联和复杂SQL查询支持较差,需要自己写SQL,返回后要自己将数据组装POJO
4、不能有效支持存储过程。
5、虽然有HQL,但性能较差。
所以在当今大型互联网中,灵活,SQL优化,减少数据的传递是基本的优化方法,Hibernate无法满足需求,因此,Mybatis诞生了,提供了更灵活、更方便的方法,弥补了Hibernate的这些缺陷。

四、MyBatis
Mybatis是一个半自动映射框架,因为它需要手工匹配提供POJO、SQL和映射关系,而全表映射的Hibernate只需要提供POJO和映射关系即可。
Mybatis所需要提供的映射文件包含以下三部分:
1、SQL
2、映射规则
3、POJO
在Mybatis中需要自己编写SQL,虽然比Hibernate配置多,但Mybatis可以动态配置SQL,更加灵活,可以对SQL进行优化,通过配置决定SQL的映射规则,也可以支持存储过程,所以对一些复杂的个需要优化性能SQL的查询更加方便,Mybatis几乎可以做JDBC能做到的所有事情,更具有自动映射功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值