首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>J2EE>正文

J2EE综合--业务逻辑和数据库访问决策

http://www.oklinux.cn  2008-01-20  来源: 赛迪网 afg021984  会员收藏  游客收藏  【 】 

业务逻辑和数据库访问决策
这里有2种完全不同的方法来设计JAVA企业程序,其中一种选择是采用标准EJB2实现途径(approach)。我更愿意称这种方法为重量级实现途径,当你使用重量级实现途径时你需要用会话beans(session bean)和消息驱动 beans(message-driven bean)去实现业务逻辑。你也可以使用DAOs(data access object)或者实体bean去访问业务逻辑
另外一种选择是使用POJOs 和轻量级构架,这种方式我称为POJO实现途径。当使用POJOs实现途径时,你的业务逻辑完全由POJO来实现。你可以使用持久型构架又叫做对象/关系映射构架(a.k.a=also know as )例如Hibernate 或者 JDO来访问数据库,再用Spring AOP(面向层面编程)来提供企业服务,比如事务治理和安全。
EJB3由于融合了POJOs和其他一些轻量级概念,所以对两者(指轻量级和重考锻揪叮┑那�分不是很清楚。举个例子,POJO中的实体bean既可以再EJB容器内运行,也可以再EJB容器外运行,然而POJOs中的会话bean和消息驱动bean仍然有重量级的行为,因为他们只能在EJB容器内部运行。所以,显而易见的,EJB3既是重量级的又有POJO的特性。EJB3中的实体bean是轻量级实现途径中的一部分。
在开发过程中,首要的是从各种各样的设计中选择到底采用重量级实现途径还是采用POJO实现途径。决策可以影响程序的几个方面,包括业务逻辑结构和数据访问机制。为了帮助从两种实现途径中择其一,来看这张典型的企业应用程序结构图,结构图在图示1中,而且在设计过程中就必须判定到底使用那种策略。

Figure 1. A typical application architecture and the key business logic and database access design decisions.
程序由网络基本表示层、业务层、持久层组成。网络基本表示层负责HTTP请求和为一般的浏览器客户端、XML和其他的胖体客户端生成HTML,比如为Ajax基本客户端生成HTML.业务层被表示层调用,用来实现程序业务逻辑。持久层被业务逻辑层用来访问外部数据源,比如数据库和其他程序。
表示层的设计不在本篇文章讨论之内,来看图表的其他部分,我们需要决定业务层结构的接口,这个接口是提供给表示层以及其他客户端的。而且还需要决定怎样访问能供多个程序访问的数据库。我们还必须决定如何处理短期事务处理事务和长期事务处理事务的并发问题。这些加起来一共有5种决策。每种决策都是要设计者来制定,为了能看懂演示图(big picture)要求每个开发者也都了解这些策略。
这些决策直接决定程序业务和表示层设计的特点。当然,还要决定一些其他很重要的决策。比如业务处理(transactions)、安全问题、缓存问题以及如何整合程序,但是关于这些问题通常在其他文献中讨论在图表1中显示的五种决策,每种决策都有多种选择。每种选择根据它要解决的实际问题都有相应的优缺点。后续章节中,你会发现每种决策针对一个或多个领域时,在功能性、易开发性、可维护性和可用性方面有不同的平衡点。尽管我是POJO实现途径的超级大FANS,但是仍然需要了解其优缺点,以便于为你的程序做最好的选择下面我们来了解一下每种决策的大纲和其选项。
决策1:组织业务逻辑
现在,很多的注重力都集中在某项技术的优点和缺点,尽管这很重要,但是在本质上你需要了解如何建构你的业务逻辑。假如不考虑如何组织就去写代码是非常简单的。例如,为一个会话BEAN添加代码要比在域模式(domain model.: An object model of the domain that incorporates both behavior and data.)中判定应该添加那种新特性要简单的多。理论上你仍然需要刻意的为你的软件设计最合适的业务逻辑。究竟我相信你有过修改别人垃圾结构代码的惨痛经验
要害的决策是:到底应该用面向对象的实现途径还是面向过程的实现途径来实现你的程序。这个不是关于技术的决策,但是你技术上的决策可以潜在的约束你的业务逻辑的组织结构。采用EJB2技术,有利于面向过程设计,然而POJOs和轻量级构架可以让你为非凡的程序选择最好的实现途径
采用过程式设计

 虽然我是一个面向对象实现途径(指前文的使用POJO和LIGHTFRAMEWORK)的倡导者,但是有些情况下面向对象实现途径有些大材小用,比如你只想实现一个非常简单的业务逻辑。而且,有时候,面向对象实现途径不太可行-―比如,你没有持久层构架来将你的对象映射到数据库中,在这种情况下,更好的方法是编写面向过程的代码,而且采用Martin Fowler称作事务脚本(Transaction Script)的设计模式,要比采用面向对象实现途径设计要好,因为你只需要写一个方法来调用事务处理脚本去处理表示层的请求。
采种这种实现途径的一个很重要的特点是,用于实现某种行为的类和数据存储区是分开的。在EJB2的应用程序中,这种方式的业务逻辑和图表2中的设计是非常相似的。这种设计的核心全都集中在EJB或者POJO的行为上,因为他们实现了事务脚本,并且还操作那些 “哑”对象数据(因为他们只拥有很少的行为,大部分都是数据)。因为大部分的行为都集中在少量的大型类上,所以代码会变的很难理解与维护。

Figure 2. The structure of a procedural design: large transaction script classes and many small data objects
这种设计具有高面向过程的特性,而且基本不依靠面向对象语言的特性。假如你曾经使用过C或者其他非面向对象语言的话,你应该用过这种设计模式。假如这种模式很适合你的设计的话,用这种模式设计也是一种不错的选择。
这种直观的过程式开发途径,非常的诱人,因为你只需要写代码就好了,不用考虑如何组织你的类文件。但问题是,假如你的业务逻辑非常的复杂,那么你的代码会变的噩梦般的难以维护。所以,除非你要写的程序非常的简单,否则你应该用面向对象设计你的程序,而不要受面向过程的代码的诱惑。
采用面向对象设计

 在面向对象设计中,业务逻辑是由对象模型构成的,对象模型是由许多小类组成的关系网。这些类直接体现的是问题域的解决方法,如图3所示,在这种模式中,有些类只有数据,有些类只有行为,但是大多数的则两者都有,这是优秀的类设计的一种特点。

Figure 3. The structure of a domain model: small classes that have state and behavior

共4页: 上一页 1 [2] [3] [4] 下一页

上一篇:JDK核心API--Java中配置信息的存取   下一篇:高级:java学习彻底明白Java的IO系统


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·J2EE综合:谈谈Java Web开发的学习路径
·J2EE综合--分析Hibernate的缓存机制
·J2EE综合--Hibernate的事务处理机制
·高级:Java/J2EE中文问题终极解决之道
·J2EE综合--Struts常见错误的全面汇总
·进阶--开发J2EE应用应遵循的几点原则
·J2EE综合--Java企业系统架构选择考量
·进阶-当前流行的J2EE WEB应用架构分析
·Java EE/J2EE面向对象编程之道
·J2EE综合:Struts上传多个文件的例子
·J2EE基础:分析J2EE架构的6个最佳实践
·J2EE综合:关于Config参数和Context参数
·J2EE基础:J2EE开发之常用开源项目介绍
·J2EE基础:Java的中文编程与配置心得
·J2EE框架:Spring框架的事务管理及应用
·J2EE综合:看JAVA设计模式之事务处理
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·一个用JAVA写的测算服务器响应速度程序
·软件测试:软件测试的基础知识概要介绍
·J2EE综合--浅析Java程序员的存储过程
·J2EE综合:业务逻辑和数据库的访问决策
·J2EE综合:关于Java EJB容器存取和实现
·J2EE综合--Java企业系统架构的选择考量
·J2EE综合--java语言不一定就跨平台
·J2EE综合--对Struts中常见错误的汇总
·J2EE综合:开发J2EE应用应遵循的几点原
·J2EE综合:Java EE/J2EE面向对象编程之
·提高J2EE层与数据库层交互操作能力的优
·开发J2EE应用时应该遵循的几个基本准则
  阅读排行
·对J2EE开发中常用开源项目的介绍
·J2EE综合--关于权限设计的详细探讨
·J2EE--关于JAVA的分页查询操作技术
·J2EE综合--Java企业系统架构选择考量
·J2EE基础:j2ee所包含的13种核心技术
·J2EE基础:在Struts 2中实现文件上传
·J2EE综合:Struts上传多个文件的例子
·与你共同分享12个最重要的J2EE最佳实践
·J2EE综合--浅谈Java程序员的存储过程
·J2EE综合--Java EJB容器的存取和实现
·J2EE综合--JAVA开发工具安装配置心得
·J2EE综合--总结java编程中的经验教训
·J2EE综合:谈谈Java Web开发的学习路径
·J2EE基础:Struts开发中异常处理机制
·[J2EE] JNDI定义Oracle数据源的方法
网摘收藏: