(一)核心框架基础
内容介绍:
1. Mybatis持久层技术
2. Spring逻辑控制技术
3. SpringMVC Web交互技术
4. SSM整合进行单体项目开发
(二)核心框架高级
内容介绍:
1. zookeeper 注册中心
2. Dubbo 分布式技术
3. SpringBoot Spring框架整合
4. Elasticsearch 全文检索
5. Mybatis-Plus Mybatis封装工具
6. Redis&Nginx 非关系型数据库与负载均衡工具
核心内容:
重点说明解讲SSM整合后,对于分布式项目所要学习的框架技术。简单介绍每个框架的作用和应用场景。为后续学习提供指引。增强学员的学习兴趣和动力。
(三)分布式项目
基于springBoot+Mybatis+Zookeeper+Dubbo 的综合健康项目。
什么是框架及优势
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。
简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
我们是由于效率和易用性的考虑使用框架。框架能节省开发时间。框架强制使用公共的约定,因此它能有效地解决一些共有的问题,它能让决定更连贯,避免我们写一大堆自定义模块来实现这些性能,框架节省了我们不少的时间和精力,并且让扩展变得更容易。
框架解决的问题
技术整合问题
框架要解决的最重要的一个问题是技术整合的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦。这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响。框架一般处在低层应用平台(如 J2EE )和高层业务逻辑之间的中间层。
三层架构
框架的重要性在于它实现了部分功能,并且能够很好的将低层应用平台和高层业务逻辑进行了缓和。为了实现软件工程中的“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常见的MVC 软件设计思想就是很好的分层思想。
框架的重要性在于它实现了部分功能,并且能够很好的将低层应用平台和高层业务逻辑进行了缓和。为了实现软件工程中的“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常见的MVC 软件设计思想就是很好的分层思想。
三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。“高内聚,低耦合”,可以使开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。
分层后的优势: 1.避免了表示层直接访问数据访问层,表示层只和业务逻辑层有联系,提高了数据安全性。 2.有利于系统的分散开发,每一个层可以由不同的人员来开发,只要遵循接口标准,利用相同的对象模型实体类就可以了,这样就可以 大大提高系统的开发速度。 3.方便系统的移植,如果要把一个 C/S 的系统变成 B/S 系统,只要修改三层架构的表示层就可以了,业务逻辑层和数据访问层几乎不用修改就可以轻松的把系统移植到网络上。 4.项目结构更清楚,分工更明确,有利于后期的维护和升级。
持久层技术解决方案
jdbc技术是jdk的原生API,提供对数据进行持久化底层技术,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
下面列出Jdbc技术中常用对象及含义:
- DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接。
- Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接。
- Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。
- Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
- PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开 发,同时也不会影响程序的性能,同时内置事务自动提交。
主要方法:
- DbUtils类:启动类。
- ResultSetHandler接口:转换类型接口。
- MapListHandler类:实现类,把记录转化成List。
- BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象。
- Query Runner类:执行SQL语句的类。
- QueryRunner进行查询的操作时handlers类型列表:
- ArrayHandler :将ResultSet中第一行的数据转化成对象数组。
- ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]。
- BeanHandler :将ResultSet中第一行的数据转化成类对象。
- BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象。
- ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象。
- KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据。
- MapHandler :将ResultSet中第一行的数据存成Map映射。
- MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map。
- ScalarHandler :将ResultSet中一条记录的其中的某一列的数据存成Object。
jdbc做为持久层技术存在的问题
- 数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。
- Sql语句在代码中硬编码,造成代码不易维护,实际应用中sql变化的可能较大,sql变动需要改变java代码。
- 使用preparedStatement向占位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。
- 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对(javaBean)解析比较方便。
- 代码冗余太大,sql与Java程序耦合太紧密,不利于sql维护。
常见框架
持久化框架
- 持久化框架Mybatis
- MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了googlecode,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和 Data Access Objects(DAOs)。
- 持久化框架Hibernate
- Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。但是,这个框架因为各种原因目前在国内的流行 程度下降太多,现在公司开发也越来越少使用。目前使用 Spring Data 来实现数据持久化也是一种趋势。
- Web层MVC框架 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能MVC模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。
- 技术整合框架 Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的 Bean,这样就可以实现各种功能的管理,包括动态加载和切面编程。
Mybatis概述
mybatis是一个优秀的基于 java 的持久层框架,它内部封装了jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql 的动态参数进行映射生成最终执行的sql语句,最后由 mybatis 框架执行sql并将结果映射为 java 对象并返回。
采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。
mybatis的特点:
(1) 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
(2) 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
(3) 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
(4)提供映射标签,支持对象与数据库的orm字段关系映射
(5) 提供对象关系映射标签,支持对象关系组建维护
(6) 提供xml标签,支持编写动态sql。
(7) 支持数据缓存和注解开发。
mybatis的官方网址: https://www.mybatis.org/