为了避免设计模式1的缺点,我们介绍一下封装
entitybean值域的valueobjec的概念。valueobject,
用某些语言的术语来说,就是一个结构类型,因为他们
和corba的结构类型非常类似。
ValueObjectcodesnippetforCompany
publicclassCompanyStructimplements
java.io.Serializable{
publicIntegercomId;//PrimaryKey
publicStringcomName;
publicStringcomDescription;
publicjava.sql.TimestampmutationDate;
}
ValueObjectcodesnippetforEmployee
publicclassEmployeeStructimplements
java.io.Serializable{
publicIntegerempId;//PrimaryKey
publicIntegercomId;//ForeignKey
publicStringempFirstName;
publicStringempLastName;
publicjava.sql.TimestampmutationDate;
}
现在,公司和雇员的entitybean可以把上面的一个结构类型作为
ejbCreate()的一个参数。由于这个结构封装了entity的所有字段
的值,entitybean只需要一个getdata()和setdata()方法就可以
对所有的字段进行操作。
CodesnippetforanEntityBean’screate()
publicIntegerejbCreate(CompanyStructstruct)throws
CreateException{
this.comId=struct.comId;
this.comName=struct.comName;
this.comDescription=struct.comDescription;
this.mutationDate=struct.mutationDate;
returnnull;
}
CodesnippetforanEntityBean’sgetData()
publicCompanyStructgetData(){
CompanyStructresult=newCompanyStruct();
result.comId=this.comId;
result.comName=this.comName;
result.comDescription=this.comDescription;
result.mutationDate=this.mutationDate;
returnresult;
}
CodesnippetforanEntityBean’ssetData()
publicvoidsetData(CompanyStructstruct){
this.comName=struct.comName;
this.comDescription=struct.comDescription;
this.mutationDate=struct.mutationDate;;
}
跟设计模式1中使用单独的get()和set()方法去操作特定字段不同,
在设计模式2中,我们避免这种情况而只需要进行一次远程调用就
可以了。现在,只有一个事务通过一次远程调用就操作了所有的数
据。这样,我们就避免了设计模式1的大部分缺点,除了建立bean
之间的关系外。
虽然setdata()方法可以对所有字段赋值,但是,borlandappserver
提供了一种智能更新的特性,只有被修改过的字段才会被重新写入数
据库,如果没有字段被修改,那么ejbStore()方法将会被跳过。
borland程序员开发指南(EJB)有更详细的描述。
同样,在entitybean和struct之间存在这重复的代码,比如同
样的字段声明。这意味着任何数据库表结构的修改都会导致
entitybeabn和struct的改变,这使得同步entity和struct变得
困难起来。
一个小小的改进可以从一定程度上避免这种情况,
就是在ebCreate()方法中调用setddata()方法,这可以消除一
些冗余的代码。
CodesnippetforanEntityBean’screate()
publicIntegerejbCreate(CompanyStructstruct)throws
CreateException{
this.comId=struct.comId;//settheprimarykey
setData(struct);//thisremovessomeredundantcode
returnnull;
}
分享到:
相关推荐
【EJB设计模式概述】 EJB(Enterprise JavaBeans)设计模式是解决在Java EE平台中使用EJB组件遇到的问题和挑战的一种策略。这些模式旨在优化系统性能、可扩展性、可维护性,以及提高组件的重用性。在大型、复杂的...
本书包括了多个高级EJB设计模式,还提供了使用EJB设计模式的策略、J2EE开发的最佳实例,以及非常实用的EJB设计技巧和技术。本书还包括以下内容:架构模式、事务和持久性模式、客户端交互模式、主键一成策略。用Ant...
EJB设计模式是针对EJB规范中可能出现的问题和挑战,经过实践提炼出的最佳实践和解决方案,帮助开发者更好地理解和应用EJB技术。 ### 1. EJB概述 EJB是Java平台上的服务器端组件模型,主要分为三种类型:会话Bean...
本书作者是世界上EJB设计模式领域内的卓越专家,他领导着EJB设计模式项目。本书不仅从理论上对设计模式在EJB上的应用进行了深入的探讨,而且通过实例展示了EJB设计模式的魅力。本书提出的模式都可以应用于实际项目中...
【EJB设计模式详解】 EJB(Enterprise JavaBeans)是一种在Java EE平台上构建企业级应用程序的核心组件。EJB设计模式是软件开发中的重要概念,它借鉴了设计模式的经典理论,目的是提升EJB架构的灵活性、可扩展性、...
**EJB设计模式** Enterprise JavaBeans (EJB) 是Java平台企业版(Java EE)中的核心组件,用于构建可扩展的、分布式的、事务处理的服务器端应用。EJB设计模式是开发人员在实践中总结出的解决特定问题的常用方法,...
EJB设计模式是开发者在实际项目中解决特定问题时,根据EJB规范和最佳实践形成的重复性解决方案。这些模式为复杂的企业级应用开发提供了结构化和可重用的方法。 1. **单例Session Bean** - 在EJB中,单例Session ...
这本书“EJB设计模式 中文版”很可能是为中文读者提供了一个深入理解EJB设计模式的指南。 ### EJB概述 EJB是Java EE(企业版)的一部分,主要处理业务逻辑和数据存储。EJB分为三种主要类型:会话bean(Session ...
EJB设计模式是开发者在处理EJB时遵循的最佳实践,这些模式有助于解决常见的复杂问题,提高代码的可重用性、可维护性和性能。本资料《EJB设计模式》旨在帮助读者深入理解这些模式并将其应用到实际开发中。 1. **单例...
**Java EJB设计模式** Enterprise JavaBeans(EJB)是Java EE平台中用于构建企业级分布式应用程序的核心组件。EJB设计模式是开发人员在解决EJB应用中常见问题时总结出的最佳实践,它们有助于提高代码的可重用性、可...
设计模式是解决常见问题的模板,可以提高代码的可复用性和可维护性,EJB设计模式的运用正是为了优化这些关键方面。 2. **模式分类** - **Data Access Object (DAO)模式** DAO模式的主要意图是提供一个接口,隔离...
《EJB设计模式》是该领域的经典著作,它深入探讨了在EJB开发中常用的设计模式,帮助开发者理解和应用这些模式来解决实际问题。 **1. 会话Bean(Session Beans)** 会话Bean是客户端与服务器交互的代理,提供了业务...
这个压缩包“EJB.rar”包含了五本关于EJB设计模式的书籍,这将为学习者提供深入理解EJB开发和设计的强大资源。 EJB设计模式是解决企业级应用开发中常见问题的最佳实践。设计模式是经过时间和实践验证的解决方案模板...
### EJB设计模式详解 #### 1. 概述 本文档主要介绍并解析了PetStore应用程序中所采用的企业JavaBeans (EJB) 设计模式。通过深入分析这些模式的实际应用,可以帮助读者更好地理解EJB架构及其在企业级Java开发中的...
门面模式,作为一种软件设计模式,是EJB(Enterprise Java Beans)中的一种经典模式,它在企业级应用开发中起到简化复杂系统接口的作用。EJB是Java编程语言中用于构建服务器端企业级应用的组件,它们是可分布式部署...