第1章 框架概述

1章 框架概述

1.1 什么是框架

1.1.1 什么是框架

框架(Framework)是整个或部分系统的可重⽤设计,表现为⼀组抽象构件及构件实例间交互的⽅法;另⼀种

定义认为,框架是可被应⽤开发者定制的应⽤⻣架。前者是从应⽤⽅⾯⽽后者是从⽬的⽅⾯给出的定义。

简⽽⾔之,框架其实就是某种应⽤的半成品,就是⼀组组件,供你选⽤完成你⾃⼰的系统。简单说就是使⽤别

⼈搭好的舞台,你来做表演。⽽且,框架⼀般是成熟的,不断升级的软件。

1.1.2 框架要解决的问题

框架要解决的最重要的⼀个问题是技术整合的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的

软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应⽤依赖于这些技术,技术⾃身的复杂性和技

术的⻛险性将会直接对应⽤造成冲击。⽽应⽤是软件企业的核⼼,是竞争⼒的关键所在,因此应该将应⽤⾃身的设

计和具体的实现技术解耦。这样,软件企业的研发将集中在应⽤的设计上,⽽不是具体的技术实现,技术实现是应

⽤的底层⽀撑,它不应该直接对应⽤产⽣影响。

框架⼀般处在低层应⽤平台(如 J2EE**)和⾼层业务逻辑之间的中间层。**

1.1.3 软件开发的分层重要性

框架的重要性在于它实现了部分功能,并且能够很好的将低层应⽤平台和⾼层业务逻辑进⾏了缓和。为了实现

软件⼯程中的“⾼内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常⻅的

MVC 软件设计思想就是很好的分层思想。
在这里插入图片描述

1.1.4 分层开发下的常⻅框架

常⻅的 JavaEE 开发框架:

1、解决数据的持久化问题的框架
在这里插入图片描述

作为持久层的框架,还有⼀个封装程度更⾼的框架就是Hibernate,但这个框架因为各种原因⽬前在国内的

流⾏程度下降太多,现在公司开发也越来越少使⽤。⽬前使⽤ Spring Data 来实现数据持久化也是⼀种趋势。

2、解决 WEB 层问题的 MVC 框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

3、解决技术整合问题的框架在这里插入图片描述

1.1.5 MyBatis 框架概述

mybatis 是⼀个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,

⽽不需要花费精⼒去处理加载驱动、创建连接、创建 statement 等繁杂的过程。

mybatis 通过 xml 或注解的⽅式将要执⾏的各种 statement 配置起来,并通过 java 对象和 statement 中

sql 的动态参数进⾏映射⽣成最终执⾏的 sql 语句,最后由 mybatis 框架执⾏ sql 并将结果映射为 java 对象

并返回。

采⽤ ORM 思想解决了实体和数据库映射的问题,对 jdbc 进⾏了封装,屏蔽了 jdbc api 底层访问细节,使我

们不⽤与 jdbc api 打交道,就可以完成对数据库的持久化操作。

1.2 JDBC 编程的分析

public static void main(String[] args) {

 Connection connection = null;

 PreparedStatement preparedStatement = null;

 ResultSet resultSet = null;

try {	

//加载数据库驱动

 Class.forName("com.mysql.jdbc.Driver");

//通过驱动管理类获取数据库链接

 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?

characterEncoding=utf-8","ro ot", "root");

//定义 sql 语句 ?表示占位符

//参数值

//获取预处理 statement

preparedStatement = connection.prepareStatement(sql);

//设置参数,第⼀个参数为 sql 语句中参数的序号(从 1 开始),第⼆个参数为设置的

preparedStatement.setString(1, "王五");

//向数据库发出 sql 执⾏查询,查询出结果集resultSet = preparedStatement.executeQuery();

//遍历查询结果集

while(resultSet.next()){

 System.out.println(resultSet.getString("id")+""+resultSet.getString("username"));

}

} catch (Exception e) {

 e.printStackTrace();

}finally{

//释放资源

if(resultSet!=null){ try {

resultSet.close();

} catch (SQLException e) {

 e.printStackTrace();

}

}

if(preparedStatement!=null){

 try {

 preparedStatement.close();

} catch (SQLException e) { e.printStackTrace();

}

}

if(connection!=null){ try {

 connection.close();

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

}

}

}

}

上边使⽤ jdbc 的原始⽅法(未经封装)实现了查询数据库表记录的操作。

1.2.2 jdbc 问题分析

1、数据库链接创建、释放频繁造成系统资源浪费从⽽影响系统性能,如果使⽤数据库链接池可解决此问题。

2、Sql 语句在代码中硬编码,造成代码不易维护,实际应⽤ sql 变化的可能较⼤,sql 变动需要改变 java代码。

3、使⽤ preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不⼀定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。
4、对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值