[b]设计时必须作出的五个决策:[/b]
1. 业务层的组织结构——组织业务逻辑
1) 使用过程式设计
i. 事务脚本(Fowler):通过过程来组织业务逻辑,其中每一个过程用来处理来自表示层的一个单独的请求。这样做使得实现行为的类和存储状态的类分开
ii. 事务脚本设计的结构:大型的事务脚本和大量的小数据对象
事务脚本
事务脚本
数据对象
行为
状态
2) 使用面向对象设计
i. 领域模型(对象模型):Fowler把用来开发业务逻辑的面向对象方法称为领域模型(Domain Model)。它能充分利用继承和回环调用等特性。
ii. 领域模型的结:兼具状态和行为的小型类
行为
状态
3) 数据表模块(Table Module)模式(不推荐)
比事务脚本模式更加结构化,因为对于每个数据库表,它都定义了一个数据表模块类,这个类实现操作对应数据表的代码,和事务脚本一样,它也把状态和行为分到不同的类里面。
2. 暴露给表示层及其他客户程序的接口——封装业务逻辑
1) EJB session façade
使用session façade封装业务对象,存在会话bean只能运行在ejb容器里这一不足。
2) POJO façade
是一个pojo而非ejb,事务管理和安全等服务则由aop而不是ejb容器提供。
(pojo façade无法参与由远程客户发起的分布式事务)
3) 暴露领域模型模式(Exposed domain model pattern)
表示层直接调用领域对象而不是通过façade。但是这样就增加了表示层的复杂度,因为表示层必须管理数据库连接。
注:将持久层领域对象返回给表示层的代码特别容易出错。由于表示层可能尝试访问业务层未加载的对象(在hibernate中,这是因为延迟加载的问题),因此产生运行时错误的风险也会加大。如果使用JDO,hibernate或EJB3,你可以把领域对象模型暴露给表示层,并允许业务层将持久领域模型返回给表示层,从而避免这个问题(这就是Open session in view)(这里我的理解就是在业务逻辑里面写持久层操作代码)。当表示层游历于领域对象之间的关系时,持久层框架就会加载它访问的对象,这就是所谓的延迟加载技术。
3. 持久层如何访问数据库。
1) 直接使用JDBC存在的问题
i. 开发和维护sql困难而且耗时
ii. Sql缺少可移植性
iii. 编写jdbc代码耗时而且容易出错
注:有时为了取得最佳性能,我们必须使用sql的特定功能,包括厂商提供的专有特性,这时我们就不能使用即时生成sql的持久层框架。
2) 使用ibatis
3) 使用持久层框架
Hibernate 和JDO
4. 处理数据库事务中的并发(单个数据库事务)。
1) 隔离的(isolated)数据库事务
存在性能较低的瓶颈,可以考虑使用锁机制替代。
2) 乐观锁
乐观锁的工作原理是让应用程序检测它即将更新的数据是否已被另一个事务修改。
通常是在表中增加一个版本字段。
适用于并发更新的几率极小,此外应用程序不是阻止并发更新,而是检测并发更新并回滚。
3) 悲观锁
读取某些记录时先锁定这些记录,阻止其他事务访问这些记录。具体细节由数据库决定。
5. 处理长事务中的并发(多个数据库事务)。
1) 乐观离线锁模式(optimistic Offline Lock)
用户要等待回滚,因此等待时间过长。
2) 悲观离线锁模式(Pessimistic Offline Lock)
在编辑过程开始之初,锁定共享数据(由应用程序进行锁定而不是数据库)。
分享到:
相关推荐
### JAVA架构设计原则 #### 基本原则 在探讨JAVA架构设计时,有几个核心原则是必不可少的: 1. **分层原则**:这一原则强调通过分层来降低软件的复杂性。它将整个系统划分为不同的逻辑层级,每一层都承担特定的...
J2EE架构的设计原则和技术栈为企业级应用提供了强大的支撑,通过分层和组件化的策略,实现了高可用性、高扩展性和高效率。对于开发者而言,理解和掌握J2EE架构的关键技术,如多层体系结构、组件技术和服务技术,是...
J2EE体系结构基于分层设计原则,通常包括以下几个关键层次: 1. **表现层(Presentation Layer)**:这一层负责与用户交互,通常由Web组件(如HTML、JavaScript、JSP和Servlet)构成,提供用户界面。JSP(Java...
这个“J2EE设计/java设计模式学习资料集合”显然是为了帮助开发者深入理解和应用这些模式。 1. **单例模式**: 在J2EE应用中,单例模式用于确保一个类只有一个实例,并提供全局访问点,比如应用服务器中的缓存服务或...
在J2EE课程设计中,通常会涉及以下几个核心知识点: 1. **Servlet与JSP**:Servlet是Java编写服务器端程序的标准,用于处理HTTP请求。JSP(JavaServer Pages)则是一种动态网页技术,允许将Java代码嵌入HTML页面中...
#### J2EE分布式系统框架的设计原则 在设计J2EE分布式系统框架时,以下几个原则至关重要: - **松耦合**:组件之间应尽可能地保持独立,通过标准的服务接口进行通信,这样可以提高系统的灵活性和可维护性。 - **...
**J2EE设计开发编程指南**是一本专为高级开发者准备的书籍,旨在深入解析J2EE(Java 2 Platform, Enterprise Edition)平台的核心概念、设计原则和开发实践。本书全面覆盖了J2EE技术的各个方面,对于想要提升在企业...
同时,需要理解关系数据库的设计原则,如范式理论,以及如何优化数据库性能。 7. **EJB(Enterprise JavaBeans)**:虽然没有直接提及,但Java EE项目中可能会用到EJB,如Session Beans进行业务逻辑处理,Entity ...
在J2EE环境中,开发一个购物网站涉及到多个技术组件和设计原则。首先,SSH(Struts2、Spring、Hibernate)是一个经典的Java EE开发框架组合,用于处理MVC(Model-View-Controller)架构。Struts2作为控制器,负责...
这份源码集合旨在帮助开发者深入理解J2EE架构的设计原则和最佳实践,提升在实际项目中的应用能力。 J2EE(Java 2 Platform, Enterprise Edition)是一个开放标准的平台,用于构建和部署分布式、多层的企业级应用...
4.1显示层设计原则 12 4.2控制层设计原则 12 4.3控制层设计原则 13 4.4数据访问层设计原则 13 5系统界面的演示 14 5.1 登录用户界面 14 5.2用户管理界面 16 5.3收支管理界面 17 6系统测试 19 6.1概要 19 6.2测试对象...
1.4 设计原则 8 1.5 专业术语与缩写解释(如表1) 9 2 运行架构 10 2.1 基本设计理念 10 2.2 总体结构图设计 10 2.3 运行环境设计 11 3 网络平台 11 3.1 系统角色分配 11 3.2 软件结构 12 3.2.1 方案设计 12 3.2.2 MVC...
在J2EE课程设计中,学生将深入理解J2EE框架,学习如何使用NETBEANS进行开发,掌握数据库设计原则,以及如何构建用户友好的WEB界面和后台管理系统。此外,课程还强调团队协作、项目管理和自我学习能力的培养,这些都...
在本书中,你会了解到J2EE架构设计的基本原则,包括分层架构、模块化设计、服务化思想等。分层架构通常包括表现层、业务逻辑层和数据访问层,每一层都有其特定的职责,以实现松耦合和高内聚。模块化设计则允许代码按...
在J2EE的世界里,"道"意味着理解技术的内在逻辑,包括但不限于系统设计原则、性能优化策略、可扩展性和灵活性的实现以及故障排查的方法。J2EE作为一个企业级的应用开发平台,它提供了丰富的组件和服务,如Servlet、...
本系统的开发目的在于设计和实现一个基于J2EE的图书管理系统,解决传统图书管理系统存在的问题,提高图书管理效率和服务质量。本系统的开发具有重要的理论和实践意义,对图书馆管理和信息化建设具有重要影响。 国...
9. **设计原则**:系统设计遵循模块化、可扩展性和可维护性原则,以适应未来可能的需求变更和系统升级。 10. **需求分析**:项目背景分析了客户需求,包括客户信息管理、销售跟踪、市场分析等功能,这些需求构成了...
同时,遵循编码规范和设计原则,可以降低维护成本。 综上所述,"J2EE网上购物系统"是一个综合运用了SSH框架技术的电子商务平台,涉及到了前端交互、业务逻辑、数据持久化等多个层面,对于理解和实践J2EE开发具有很...