框架技术
1. 为什么学习框架技术
- 不用考虑公共问题,框架已经帮我们做好了。
- 可以专心于业务逻辑,保证核心业务逻辑的开发质量。
- 结构统一,便于学习和维护
- 框架中集成了前人的经验,可以帮助新手写出稳定、性能优良而且结构优美的高质量程序。
2. 框架的概念
框架(Framework)是一个提供了可重用的公共结构半成品。它为我们构建新的应用程序提供了极大的便利。一方面提供了可以拿来就用的工具,更重要的是,提供了可重用的设计。
框架就是应用程序的骨架,开发者可以在这个骨架上加上自己的东西,搭建符合自己需求的应用系统。
3. 主流框架介绍
Struts2框架
Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。
Hibernate框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
Spring框架
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
SpringMVC框架
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
◆ 目的:解决企业应用开发的复杂性
◆ 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆ 范围:任何Java应用
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
MyBatis框架
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
MyBatis介绍及其环境搭建
1. 数据持久化概念
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。
数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等
2. MyBatis框架及ORM
MyBatis框架简介
- 是一个开源的数据持久层框架
- 支持普通SQL查询、存储过程和高级映射
什么是ORM
- 对象、关系的映射
- 是一种数据持久化技术
Mybatis是ORM解决方案
基于ORM,MyBatis在对象模型和关系数据库的表之间建立了一座桥梁,通过Mybatis建立SQL关系映射,以便捷实现数据存储、查询、更改和删除等操作。
2. MyBatis环境搭建
下载需要的jar文件
部署jar文件
创建Mybatis核心配置文件configuration.xml
创建持久化嘞(POJO)和SQL映射文件
创建测试类
3. MyBatis框架的优缺点及适用场合
优点
- 与JDBC相比,减少了50%以上的代码
- Mybatis是最简单的持久化框架,小巧并且简单易学
- Mybatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程 序代码中彻底分离,减低耦合度,便于统一管理和优化,并可重用
- 提供XML标签,支持编写动态SQL语句
- 提供映射标签,支持对象与数据库的ORM字段关系映射
缺点
- SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求
- SQL语句依赖数据库,导致数据库移植性查,不能随便更改数据库
适用场合
Mybatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需要变化较多的项目
Mybatis的基本要素———核心对象
核心接口和类
(1) 每个MyBatisd的应用程序都以一个SqlSessionFactory对象的实例为核心
(2) 首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实例构建该对象
(3) 然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象获得
(4) 有了SqlSessionFactory对象之后,就可以进而获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有执行SQL操作的方法。可以用该实例来直接执行已映射的SQL语句
Mybatis核心配置文件(mybatis-config.xml)
SQL映射文件(mapper.xml)
1. SqlSessionFactoryBuilder
- SqlSessionFactoryBuilder的作用
SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供了多个build()方法的重载
Build(Reader reader, String environment, Properties properties)
Build(InputStream inputStream, String environment, Properties properties)
Build(Configuration config) - SqlSessionFactoryBuilder的生命周期和作用域
用过即丢