Download pptx - 浅谈 J2EE 架构

Transcript
Page 1: 浅谈 J2EE 架构

浅谈 J2EE 架构叶林宝

2014/3/22厦大数据库实验室

Page 2: 浅谈 J2EE 架构

目录

( 1 ) J2EE 的来源、整体框架及其核心技术 ( 2 ) MVC 开发模式的优势、劣势 ( 3 ) Struts 介绍 ( 4 ) Hibernate 介绍 ( 5 ) Spring 介绍 ( 6 ) Ibatis 介绍 ( 与 Hibernate 的差别 ) ( 7 ) Nutz (号称 SSH 的替代品)介绍

Page 3: 浅谈 J2EE 架构

Java2 平台的 3 个版本:J2ME:Java 2 Platform Micro EditionJava 的微型版 , 常用于手机上的开发J2SE:Java 2 Platform Standard EditionJava 的标准版 , 用于标准的应用开发J2EE:Java 2 Platform Enterprise EditionJava 的一种企业版用于企业级的应用服务开发

Page 4: 浅谈 J2EE 架构

J2EE 来源

Page 5: 浅谈 J2EE 架构

J2EE 容器

Page 6: 浅谈 J2EE 架构

J2EE 核心技术ServletJsp(java 服务页面 )EJB (企业 javaBean )JDBC ( java 数据库连接)JTA/JTS ( java 事务)JNDI ( java 命名和目录服务)JavaMail ( java 邮件服务)RMI (远程方法调用)JMS ( java 消息服务)XML(Extensible Markup Language)JCA ( java 连接器体系)JAF ( JAVA 安全认证框架)

Page 7: 浅谈 J2EE 架构

MVC

Page 8: 浅谈 J2EE 架构
Page 9: 浅谈 J2EE 架构
Page 10: 浅谈 J2EE 架构

Struts 是一个基于 Sun J2EE 平台的 MVC 框架,主要是采用 Servlet 和JSP 技术来实现的。由于 Struts 能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。 Struts 把 Servlet 、 JSP 、自定义标签和信息资源 (message resources) 整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套 MVC 模式,极大的节省了时间,所以说 Struts 是一个非常不错的应用框架。

Page 11: 浅谈 J2EE 架构

Struts 的核心:ActionServletActionFormActionActionErrorActionMappingActionForward

Page 12: 浅谈 J2EE 架构

HibernateHibernate 是非常优秀,成熟的 O/R Mapping 工具。它提供了强大的功能,让我们以面向对象的方式访问关系型数据库

提供了:a .提供了访问数据库的操作接口(如保存,更新,删除)b .内部封装了 JDBC ,对事务的控制( JTA )c .提供了如下核心接口:Configuration :配置和启动 hibernate ,创建 SessionFactory 对象SessionFactory( 会话工厂 ) :初始化 hibernate ,创建 session 对象Session :负责保存,更新,删除,加载和查询对象Transaction :负责管理事务Query 和 Criteria :执行数据库查询

Page 13: 浅谈 J2EE 架构
Page 14: 浅谈 J2EE 架构

什么是持久化:

什么是 O/R Mapping? ( object/relationalmapping , ORM )对象 - 关系映射是一门非常实用的工程技术,它是为了让程序对数据库的访问变成面向对象式的访问,但是数据库本身是关系型的,为了解决这一难题, O/RMapping 工具就扮演着从面向对象的访问到关系型数据库存储的桥梁。

Page 15: 浅谈 J2EE 架构

原理: 1. 读取并解析配置文件 2. 读取并解析映射信息,创建SessionFactory 3. 打开 Sesssion 4. 创建事务 Transation 5. 持久化操作 6. 提交事务 7. 关闭 Session 8. 关闭 SesstionFactory

为什么要用: 1. 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM实现。他很大程度的简化 DAO 层的编码工作3. hibernate使用 Java反射机制,而不是字节码增强程序来实现透明性。4. hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

Page 16: 浅谈 J2EE 架构

Spring 简介它是一个开源的项目,而且目前非常活跃;它基于 IoC ( Inversion of Control ,反向控制)和 AOP 的构架多层 j2ee 系统的框架,但它不强迫你必须在每一层中必须使用 Spring ,因为它模块化的很好,允许程序员根据自己的需要选择使用它的某一个模块;它实现了很优雅的 MVC ,对不同的数据访问技术提供了统一的接口,采用 IoC使得可以很容易的实现 bean的装配,提供了简洁的 AOP 。通俗的讲: Spring 是一个集成了许多第三方框架的大杂烩,其核心技术是IOC (控制反转,也称依赖注入)和 AOP (面向切面编程)

Page 17: 浅谈 J2EE 架构

Spring 框架的 7 个模块

Page 18: 浅谈 J2EE 架构

从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从Spring 中受益。◆目的:解决企业应用开发的复杂性◆功能:使用基本的 JavaBean 代替 EJB ,并提供了更多的企业应用功能◆范围:任何 Java 应用简单来说, Spring 是一个轻量级的控制反转( IoC )和面向切面( AOP )的容器框架。

Page 19: 浅谈 J2EE 架构

核心技术:控制反转( IOC ) IoC (控制反转):本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了 IoC 容器, Spring 的 IoC 容器主要使用 DI 方式实现的。不需要主动查找,对象的查找、定位和创建全部由容器管理

Page 20: 浅谈 J2EE 架构

 IoC 理论的背景

Page 21: 浅谈 J2EE 架构

什么是控制反转 (IoC)

Page 22: 浅谈 J2EE 架构

使用 IOC 框架应该注意什么第一、软件系统中由于引入了第三方 IOC 容器,生成对象的步骤变得有些复杂,本来是两者之间的事情,又凭空多出一道手续,所以,我们在刚开始使用 IOC 框架的时候,会感觉系统变得不太直观。第二、由于 IOC 容器生成对象是通过反射方式,在运行效率上有一定的损耗。如果你要追求运行效率的话,就必须对此进行权衡。第三、具体到 IOC 框架产品 (比如: Spring) 来讲,需要进行大量的配制工作,比较繁琐,对于一些小的项目而言,客观上也可能加大一些工作成本。第四、 IOC 框架产品本身的成熟度需要进行评估,如果引入一个不成熟的 IOC 框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。

Page 23: 浅谈 J2EE 架构
Page 24: 浅谈 J2EE 架构
Page 25: 浅谈 J2EE 架构

iBatisiBatis 是 apache 的一个开源项目,一个 O/R Mapping 解决方案, iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案。

MyBatis 来源于 iBATIS , iBATIS 是一个由 Clinton Begin 在 2001 年发起的开放源代码项目, iBATIS 一词来源于“ internet” 和“ abatis” 的组合。该项目最初侧重于密码软件的开发,现在是一个基于 Java 的持久层框架。 iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects( DAO ),它是著名的 ORM 开发框架,分为 Java 和 .NET 版本,有着众多的追随者。

Page 26: 浅谈 J2EE 架构

搭建 iBatis 开发环境: 1 、导入相关的 jar 包, ibatis-2.3.0.677.jar 、 mysql-connector-java-5.1.6-bin.jar 2 、编写配置文件: Jdbc 连接的属性文件 总配置文件, SqlMapConfig.xml 关于每个实体的映射文件( Map 文件)

Page 27: 浅谈 J2EE 架构

iBatis 的优缺点: 优点: 1 、 减少代码量,简单; 2 、 性能增强; 3 、 Sql 语句与程序代码分离; 4 、 增强了移植性; 缺点: 1 、 和 Hibernate 相比, sql 需要自己写; 2 、 参数数量只能有一个,多个参数时不太方便;

Page 28: 浅谈 J2EE 架构

Nutz 是一个优秀的国产开源项目,它是一组轻便小型的框架的集合,各个部分可以被独立使用,据作者称, Nutz 的使命就是“解决第三方类库在 Web 项目开发中的低效问题”,而 Nutz 也被称作是“除了 SSH之外的另一个选择”。Nutz最初由 zozoh (张志昊)于 2009 年发起,随着项目的发展,越来越多的开发者参与贡献(提交代码、撰写文档、测试 bug等),后来逐渐形成了一个 1000 人左右的社区(主要成员)。

Page 29: 浅谈 J2EE 架构

对于 Java 程序员来说,除 SSH 之外,的另一个选择 : Nutz

Nutz 的特点?·  体积小,轻量级;最新版本的 jar 文件只有 712kb;·  对 JDBC 的封装支持; 针对 JDBC 进行了薄封装;· 灵活;各个部分独立使用;· 完整,不零散;它的所有功能均不依赖于第三方 jar 文件;· 功能全面;它具有 SSH 框架拥有的大部分功能。

Page 30: 浅谈 J2EE 架构

Nutz 为谁而设计?如果你觉得 Hibernate 控制比较繁琐, iBatis 编写 SQL又比较麻烦,Nutz.Dao 专为你设计。 如果你觉得在多个服务器部署或者修改 Spring 配置文件很麻烦, Nutz.Ioc 专为你设计 如果你觉得直接写 XML 配置文件很麻烦,可视化编辑器又没控制感, Nutz.Mvc 专为你设计 如果你觉得 JSON 转换很麻烦(要写超过一行以上的代码), Nutz.Json 专为你设计 如果你觉得 Java 语法不如 Ruby 便捷, Nutz.Castor 以及 Nutz.Lang 专为你设计 如果你以前根本没接触过 SSH ,只使用 JDBC 编程, 整个 Nutz 专门为你设计 你只要在你的 classpath 下部署这个小 jar 包,你会得到上述所有好处

Page 31: 浅谈 J2EE 架构

http://www.csdn.net/article/2014-03-21/2818918-Nutz-Java-Framework

Page 32: 浅谈 J2EE 架构

32

谢谢!