J2EE领域的一些常见的技术框架结构图

标签: j2ee 领域 常见 | 发表时间:2012-10-23 00:08 | 作者:luqin1988
出处:http://blog.csdn.net

1.Spring 架构图

        Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。


  组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

  • 核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC ) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI 、EJB、电子邮件、国际化、校验和调度功能。
  • Spring AOP : 通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring 的应用程序中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。
  • Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写 的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。
  • Spring ORM :Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO 、Hibernate 和iBatisSQLMap 。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。

2.ibatis 架构图

  ibatis 是一个基于 Java 的持久层框架。 iBATIS 提供的持久层框架包括 SQL Maps 和DataAccess Objects ( DAO ),同时还提供一个利用这个框架开发的 JPetStore 实例。


  IBATIS :最大的优点是可以有效的控制sql 发送的数目,提高数据层的执行效率!它需要程序员自己去写sql 语句,不象hibernate那样是完全面向对象的,自动化的,ibatis 是半自动化的,通过表和对象的映射以及手工书写的sql 语句,能够实现比hibernate 等更高的查询效率。

  Ibatis 只是封装了数据访问层,替我们做了部分的对象关系映射。但代价是必须要写xml配置文件,相对于Hibernate 还要写很多sql 。Hibernate 通过工具直接从数据库模式生成实体类和基本的配置文件,而且大部分情况下不需要我们写sql ,会较大的提升开发效率。但这些也有很多的局限性,尤其是对环境的要求较高(数据库设计,对象设计,团队的协作等)。 个人感觉Ibatis 对项目比较有意义的地方在于它小巧灵活,可扩展,封装了数据访问层(事务,缓存,异常,日志),并提供了DAO 框架支持。

  利用Ibatis 我们可以做到代码和sql 的分离,只要sql 能够解决的问题,Ibatis 就能帮我们较容易的解决,同时也使我们的项目对某一框架的依赖性变小(因为Ibatis 是非侵入性的)。这将极大的降低项目风险,减少解决复杂问题的时间,使项目的维护变得简单。

  Ibatis 对于应用的修改,调试,扩充和维护将会变得容易自然。修改时,我们主要修改的是代表模型的实体对象,xml 配置文件中的sql ,和/ 或配置文件的ResultMap (很多时候是不需要的)。同时,sql 和代码分离,我们不用在代码的StringBuffer 的append 方法之间寻找需要修改的sql 。配置文件中的sql 便利了我们的调试和对sql 的评审及以后的sql 重用。

3.struts1 架构图

  Struts 是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC 模式,能够很好地帮助java 开发者利用J2EE 开发Web 应用。和其他的java 架构一样,Struts 也是面向对象设计,将MVC 模式” 分离显示逻辑和业务逻辑” 的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如Java Servlets ,JavaBeans ,ResourceBundles 与XML 等标准技术,以及Jakarta Commons 的一些类库。Struts 有一组相互协作的类(组件)、Serlvet 以及jsptag lib 组成。基于struts 构架的web 应用程序基本上符合JSP Model2 的设计标准,可以说是一个传统MVC 设计模式的一种变化类型。

  Struts 有其自己的控制器(Controller ),同时整合了其他的一些技术去实现模型层(Model )和视图层(View )。在模型层,Struts 可以很容易的与数据访问技术相结合,如JDBC / EJB ,以及其它第三方类库,如Hibernate / iBATIS ,或者Object Relational Bridge( 对象关系桥) 。在视图层,Struts 能够与JSP ,包括JSTL 与JSF ,以及Velocity 模板,XSLT 与其它表示层技术。

  Struts 为每个专业的Web 应用程序做背后的支撑,帮助为你的应用创建一个扩展的开发环境。


  Client browser (客户浏览器):

  来自客户浏览器的每个HTTP 请求创建一个事件。Web 容器将返回一个HTTP Response。

  Controller (控制器):

  控制器接收来自浏览器的请求,并决定将这个请求发往何处。就Struts 而言,控制器是以servlet 实现的一个命令设计模式。struts-config.xml 文件配置控制器。

  Logic 业务逻辑:

  业务逻辑更新模型的状态,并帮助控制应用程序的流程。就Struts 而言,这是通过作为实际业务逻辑“ 瘦” 包装的Action 类完成的。

  Model (模型)的状态:

  模型表示应用程序的状态。业务对象更新应用程序的状态。ActionForm. bean 在会话级或请求级表示模型的状态,而不是在持久级。

  View (视图):

  视图就是一个JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息,只有标记。标记是使Struts区别于其他模板技术(如Velocity)的因素之一。

4.struts2 架构图

  Struts 2 相对于Struts 1.X ,将实现用户业务逻辑(Action )同Servlet API 分离开,这种分离机制,是采用了拦截器或者拦截器栈(拦截器链)。拦截器是Struts 2 的核心内容之一。

  Struts 2 内建了多个拦截器和拦截器栈(由多个拦截器形成的拦截器链),将用户的Web 请求进行拦截处理,从而提供了更加丰富的功能,例如数据类型转换、国际化、文件上传等。


5.Hibernate 架构图

  Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命 意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP ,完成数据持久化的重任。


  Hibernate 的核心接口一共有5 个,分别为:Session 、SessionFactory、Transaction 、Query和Configuration 。这5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。

  Session 接口:Session 接口负责执行被持久化对象的CRUD 操作(CRUD 的任务是完成与数据库的交流,包含了很多常见的SQL语句。) 。但需要注意的是Session 对象是非线程安全的。同时,Hibernate 的session 不同于JSP 应用中的HttpSession 。这里当使用session 这个术语时,其实指的是Hibernate 中的session ,而 以后会将HttpSesion 对象称为用户session 。

  SessionFactory 接口:SessionFactory 接口负责初 始化Hibernate 。它充当数据存储源的代理,并负责创建Session 对象。这里用到了工厂模式。需要注意的是SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory 。

  Configuration 接口:Configuration 接口负责配置并启动Hibernate ,创建SessionFactory 对象。在Hibernate 的启动的过程中,Configuration 类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory 对象。

  Transaction 接口:Transaction 接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

  Query 和Criteria 接口:Query 和Criteria 接口负责执行各种数据库查询。它可以使用HQL 语言或SQL 语句两种表达方式。


6.J2EE 架构图

  J2EE 是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。

  J2EE 核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE 架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。


7.Oracle架构图

                                                                 

作者:luqin1988 发表于2012-10-23 8:29:35 原文链接
阅读:18 评论:0 查看评论

相关 [j2ee 领域 常见] 推荐:

J2EE领域的一些常见的技术框架结构图

- - CSDN博客推荐文章
        Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的. 框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架. Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境. Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象.

J2EE面试整理

- - 研发管理 - ITeye博客
1 web.xml加载顺序:.   相同位置的过滤器,一般按照 filter-mapping的顺序过滤,所以 编码过滤器 一般放在最前面. 2 struts2的工作流程. (1)客户端提交一个HttpServletRequest请求(.action或JSP页面). (2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等.

揭开J2EE集群的面纱

- - 企业架构 - ITeye博客
[转载自] http://bbs.51cto.com/thread-35850-1-1.html . 越来越多的关键任务和大型应用正运行在J2EE平台上,象银行之类的应用要求很高的可用性(HA),大型系统比如google和Yahoo则要求更好的伸缩性. 今天高可用性和伸缩性的重要性对于互联世界日益增长,最著名的证明是1999年eBay中断了22小时的服务,原因是超过230万次的拍卖,最终导致eBay股票下跌了9.2个百分点.

j2ee中实现QQ第三方登陆

- - CSDN博客Web前端推荐文章
最近接触了一些第三方登陆的东西,弄的真是一个头,两个大>.<. 今天,终于把腾讯第三方登陆调试通了,做一个记录,顺便发发牢骚. QQ互联官网: http://connect.qq.com/. 申请之类的就不多说了,没什么难点,主要记录一下代码方面的东西. 看官方文档的时候写的太详细,太复杂了. 由于项目中用的是自定义的图标,所以没有用Js SDK(后来才知道好像官方的js SDK也可以自定义图标).

J2EE事务并发控制策略总结

- - 开源软件 - ITeye博客
本文结合hibernate以及JPA标准,对J2EE当前持久层设计所遇到的几个问题进行总结:. 第一:事务并发访问控制策略. 当前J2EE项目中,面临的一个共同问题就是如果控制事务的并发访问,虽然有些持久层框架已经为我们做了很多工作,但是理解原理,对于我们开发来说还是很有用处的. 事务并发访问主要可以分为两类,分别是同一个系统事务和跨事务访问的并发访问控制,其中同一个系统事务可以采取乐观锁以及悲观锁策略,而跨多个系统事务时则需要乐观离线锁和悲观离线锁.

谈领域服务

- - 人月神话的BLOG
对于跨系统和模块间的SOA服务识别和分析我前面文章谈的比较多,这块的SOA服务重点是实现跨系统和模块的业务交互和协同,而对于领域服务而言则更加关心的是对于单个系统或模块,其应该如何抽象领域对象并将其能力以粗粒度服务方式保留给应用层用. 在领域建模中的整体思路中,我们做两个层面的理解,其一是领域模型层重点是隔离传统的数据表并抽象为领域对象;而对于领域服务层重点是则将应用层和领域模型层解耦,模型层提供的能力是以领域服务的方式暴露到应用层使用的.

新领域的探索

- Fay - 人月神话的BLOG
在信息技术领域,任何新领域都是已有知识领域,已有技术和研究成果的进一步组合和创新,新领域一分解到底层你会发现全是已有技术,方法和工具. 这些很可能都是我们熟悉的内容,而新领域仅仅是对已有知识和技术的进一步组合,形成一套完整的方法和技术来解决新的问题. 当接触一个新领域的时候,首先是大量的阅读,在一开始没有机会实践的时候,那只有先补充和学习基础的理论,了解新领域的知识体系和结构,了解新领域所涉及到得关键技术.

Viddy:视频领域的Instagram?

- - Tech2IPO
Instagram刚被Facebook以 十亿美元的价格收购,成为照片分享领域的传奇. 与此同时,以视频领域的Instagram而著称的 Viddy在近日也冲上iPhone 免费应用榜首的位置. Business Insider甚至撰文建议 Google收购Viddy,从而在移动视频领域占据先机.

再谈领域建模和领域服务

- - 人月神话的BLOG
对于贫血的领域层,主要体现在两个方面,一个是没有领域业务对象的概念(领域模型中的聚合根),一个是没有明确的粗粒度的业务规则逻辑处理层. 在这种情况下,原有的业务逻辑层变化为仅仅是DAL层的一个简单封装或通道,实际的业务处理全部转化到action层或dal层进行了处理,导致无法真正提炼一个业务模块真正应该具备的领域服务能力.

NVIDIA:ARM芯片将将进军PC领域

- Kevin - cnBeta.COM
据国外媒体报道,1993年,黄仁勋创立了英伟达,想要把3D图形技术从硅图超级电脑普及到PC电脑上. 该公司以每六个月推出一款新3D图形芯片的速度打败了无数竞争对手. 18年后的今天,英伟达仍然是硅谷最具创新力的企业之一. 它也是最后一个与微处理器供应商英特尔和AMD分庭抗礼的独立图形芯片制造商.