您的位置:首页 >> 编程开发 >> Java >> JavaBeans >> 正文
RSS
 

SevenRulesforOptimizingEntityBeans

http://www.rdxx.com 02年04月13日 11:23 互联网 我要投稿

关键词: PTi , Beans , NT , IT , BEA

优化Entity Beans的七条原则 (自已翻译的老文章 :P )

Entity beans提供了一个清晰的模型,它描述了应用当中持久的商业对象和这些对象的设计构思。在对象模型中,简单的Java对象通常用最直接了当的方法来描述,但这没有包括在商业对象中常常需要用到的事务持续管理功能。Entity Beans不仅允许在一个对象模型中有相同类型商业对象的建模和考虑,而且也在bean和container服务后面隐藏所有复杂性的同时封装了持久机制。这将允许应用程序以Java对象的形式去操作这些Beans。对于任何调用代码,持久的形式和持久机制都是隐藏了的。Entity beans允许container创造性的进行最佳化持久,在遵守数据存储的开放和灵活的同时,没想到决定部署时间。

EJB为基础的项目开发,大量使用了面向对象方法和entity bean,Sun的工程师已经掌握在真实世界中使用entity beans。这篇文章详细闸述了如下的开发经验:

·探究不同的优化方法
·提供关于达到最佳性能和灵活性的建议和标准
·讨论如何避免一些已知的危险

Use Container-Managed Persistence When You Can(尽可能的使用CMP)
不要认为CMP只是用来以写少量代码来减轻工作的方法,它也是container最佳化EJB的方法,并让container自动产生的数据库存取代码。Container通过访问bean的内存缓冲区实现监控缓冲区的任何变化(也就是监控bean的变化)。在一个事务提交之前保存缓冲区到数据库,避免了缓冲区在没有任何改变时对其进行存储操作,也就避免了不必要的数据库调用而产生的昂贵开销。

另一个优化的建议是关于find方法的调用。查找一个entity bean通常包括两个数据库操作:
·查找数据库中的一条记录并取得它的primary key.
·取得这条记录将其放到缓冲中

CMP允许优化这两个数据库操作,使它们成为一个操作,无论何时都是有意义的,它可以在一个数据库调用中同时取得primary key和记录数据。

Write Code that Supports Both Bean- and Container-Managed Persistence(编写对BMP和CMP都支持的代码)
很多案例中,EJB的作者没有控制到EJB在部署时,container是否将支持CMP。同样,部署人员最终可能选择在container中使用BMP方式。你必须找到一个实现方法,让beans在允许BMP部署时又不会因为需要支持更多可能的CMP优化机制时发生混乱。一个方便的方法可以实现这个目标,就是将纯商业逻辑从持续机制中分隔出来。商业逻辑的实现在你的CMP类中,它能在选择CMP方式时单独部署。这样,将持续代码放到BMP类中,将其从CMP的类中进行继承。这样就做到了CMP超类中包含所有的商业逻辑,而BMP子类中则包含了数据库存取代码,如图1。
Figure 1: Separation between CMP and BMP

这个模型非常容易实现,但仍使灵活性受到了抑制:
它不可能从implementation classes中继承。
因为这样做意味着子类必须从CMP和BMP这两个超类中同时直接继承。另外,BMP子类将不得不直接成为CMP的实现。这就导致了多重类继承,如图2,Java编程中是不允许多重继承的。
Figure 2: Multiple inheritance not supported in Java

没有简便的方法来支持变化的持续执行。
如果可以的话,这将非常有用,如为不同的数据库提供商或不同类型的数据库执行包含数据库特殊代码。(如关系型、对象型,和其他一些旧类别的数据库)

要解决这些问题,你需要改变当前BMP的类模型,委托BMP类中的所有的持续代码给一个辅助类,并且去除BMP类中的框架。辅助类的类型被称为DAO(Data Access Object数据存取对象)。你能让DAO的interface中提供多个DAO的子类,这样就允许正确的DAO子类被实例化。如图3.这里有很多种方法来选择和实例化正确的DAO子类,比如,可以通过读取环境入口或者通过了解数据库类型来选择最合适的子类。
Figure 3: Delegation and allowing for alternate DAO implementations

共3页  第1页 第2页 第3页

 
 
标签: PTi , Beans , NT , IT , BEA 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站