SSM = springmvc + spring + mybatis
一、框架简介
2.1三层架构
软件开发常用的架构是三层架构,之所以流行是因为有着清晰的任务划分。一般包括以下三层:
1.持久层:主要完成与数据库相关的操作,即对数据库的增删改查。
因为数据库访问的对象一般称为Data Access Object(简称DAO),所以有人把持久层叫做DAO
层。
2.业务层:主要根据功能需求完成业务逻辑的定义和实现。
因为它主要是为上层提供服务的,所以有人把业务层叫做Service层或Business层。
3.表现层:主要完成与最终软件使用用户的交互,需要有交互界面(UI)。
因此,有人把表现层称之为web层或View层。
三层架构之间调用关系为:表现层调用业务层,业务层调用持久层。
各层之间必然要进行数据交互,我们一般使用java实体对象来传递数据。

讯享网
2.2什么是框架?
框架就是一套规范,既然是规范,你使用这个框架就要遵守这个框架所规定的约束。框架可以理解为半成品软件,框架做好以后,接下来在它基础上进行开发。就和我们前端Vue-Cli脚手架一样,先搭建好一个半成品的骨架,例如:我们生活中的演艺演员,他们再表演节目的时候,都是需要一个舞台的,那么这个舞台呢是他们通用的一个表演节目必需的东西,这个通用的舞台,就相当于我们的框架,是预先搭建好的。
2.3为什么使用框架?
框架为我们封装好了一些冗余,且重用率低的代码。并且使用反射与动态代理机制,将代码实现了通用性,让开发人员把精力专注在核心的业务代码实现上。比如在使用servlet进行开发时,需要在servlet获取表单的参数,每次都要获取很麻烦,而框架底层就使用反射机制和拦截器机制帮助我们获取表单的值,使用JDBC每次做专一些简单的crud的时候都必须写sql,但使用框架就不需要这么麻烦了,直接调用方法就可以。当然,既然是使用框架,那么还是要遵循其一些规范进行配置。
2.4常见的框架?
Java世界中的框架非常的多,每一个框架都是为了解决某一部分或某些问题而存在的。下面列出在目前企业中流行的几种框架(一定要注意他们是用来解决哪一层问题的):
表现层框架:专注于解决与用户交互的框架。常见的有struts2、spring mvc等等。
全栈框架: 能在三层架构中,各层都能给出解决方案的框架。比较著名的就是spring。
持久层框架:专注于解决数据持久化的框架。常用的有mybatis、hibernate、spring jdbc等等。
Hibernate(全自动框架)、MyBatis(半自动框架)
企业以前最流行的框架组合 SSH:Struts2+Spring+Hibernate
企业目前最流行的框架组合 SSM:SpringMVC+Spring+MyBatis

二、JDBC、Hibernate、MyBatis框架的区别?
JDBC(手工链接DB数据库),SQL在java代码块里,耦合度高,代码复杂,不易维护。
Mybatis需要写sql,Hibernate不需要写sql,Mybatis不完全是一个ORM框架,
但是Mybatis可以通过XML或注解方式灵活配置要运行的sql语句。
Hibernate(全自动):简单功能非常方便,但是不支持自己定义sql,需要使用HQL语句操作DB数据库,比直接写sql要复杂。
MyBatis(sql和java编码分开),一个半自动化的持久层框架。只需要关注手动书写sql语句。
三、回顾原始JDBC操作数据库
四、原始jdbc操作的分析
原始jdbc开发存在的问题如下:
- 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,就是JDBC是操作数据库持久层DAO的,那么我们每次调用封装JDBC的方法时,都要进行获取链接、然后释放资源这样重复又频繁的操作,很损耗性能。
- 注册驱动、创建链接时采用的是硬编码的形式,如果我们当前项目用的是Mysql数据库,将来我们要修改成Oracle或者其他数据库时,还需要更改数据库。
- sql 语句在代码中硬编码,把sql语句写死了,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。
- 查询操作时,需要手动将结果集中的数据手动封装到实体中。就是需要创建一个例如登录功能的User对象,需要再结果集中get获取到数据,然后set设置到新创建的User对象实体中,很麻烦,如果字段多的情况,比如成千上百个字段,那么还需要我们把所有的字段进行获取,然后赋值给User实体。
应对上述问题给出的解决方案:
- 解决注册驱动、创建链接以后更改数据库的时候硬编码问题:采用配置文件
- 再调用JDBC方法时,频繁创建释放数据库链接问题:采用数据库连接池初始化连接资源
- sql语句书写硬编码问题:采用配置文件,将sql语句抽取到xml配置文件中
- 手动封装返回结果集:采用反射+内省等底层技术,自动将实体与表进行属性与字段的自动映射


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36873.html