指南:确定实体 Bean
主题
简介
本指南着重于确定实体 Bean。指南:实体 Bean 中提供关于实体 Bean 的附加指导信息。指南:Enterprise JavaBeans(EJB)中提供了关于 EJB 的一般指导信息。
确定实体 Bean
由于实体 Bean 是为持久数据而准备的,所以实体分析类(请参阅工件:分析类)通常是实体 Bean 的良好候选项。实体 Bean 对应于包含持久状态的业务实体。它们提供了实施业务实体特定逻辑的服务。实体 Bean 的另一特征为,它们可向多个同时存在的客户机提供服务。EJB 容器将处理这些客户机及其事务的协调。
实体 Bean 用于提供持久性,但它们还可封装业务逻辑。通常实体 Bean 应仅包含与实体 Bean 和任何依附的数据对象所维持的数据相关的业务逻辑。通常应将实体间 Bean 逻辑归入到会话 Bean 中,以使实体 Bean 之间的耦合最小化。
对实体 Bean 建模
请参阅指南:确定 Enterprise JavaBeans(EJB)。
粒度 
粒度指的是实体 EJB 所代表的数据的大小。适当的粒度可能取决于使用的 EJB 规范的版本。
在 EJB 2.0 之前,建议使实体 EJB 始终具有大粒度 - 通常代表从多个数据库表分组而得的大数据分组。这是因为每个实体 EJB 都带有大量开销 - 尤其是与远程控制 EJB 相关的开销。例如,发票中的行项或电子表格中的单元格过于细化,故不应通过网络中频繁地访问它们。相反,如果数据需要附加的业务逻辑,则可将发票条目的逻辑分组或电子表格的一小部分单元格作为实体 EJB 建模。
这在 EJB 2.0 中微有不同 - 本地接口的引入减少了某些开销,并允许将细化的对象作为 EJB 建模。概念:J2EE 概述:Enterprise JavaBeans 中描述了本地接口和远程接口。本地接口没有与远程接口相关的开销,这将允许紧密耦合的 Bean 更有效地进行交互。本地接口对用于组成较大实体(负责部件的创建和销毁)的细化实体尤其有用。客户机使用较大实体的远程接口,该实体反过来使用本地接口与其部件进行交互。
然而,如果实体 Bean 与另一类之间存在组装关系,您可选择将该类作为普通的 Java 类(而非实体 Bean)进行建模。如果使用容器管理的持久性,那么这样的 Java 类就被称为“被依附对象值类”。假定组成的类无需实体 Bean 特性,那么被依附对象值类的开发和测试要比实体 Bean 更简单且更快,并将是一个很好的选项。被依附对象值类的某些局限为:
- 它们不能包含实体 Bean 引用
- 它们是按照值“获取”和“设置”的,这将带来某些性能成本,但支持从远程接口进行访问
封装
考虑将一组相关的实体 Bean 和会话 Bean 外观打包,为操纵与实体 EJB 对应的业务实体提供逻辑接口。请参阅指南:确定会话 Bean。
对实体 Bean 而言,相似的方法是封装另外一组通常具有依赖性的逻辑实体 Bean。远程客户机通过“主要”实体 Bean 访问所有数据。核心 J2EE 模式 - 组装实体模式([ALU01])中讨论了该备选方案,但建议将会话 Bean 外观作为管理实体 Bean 关系的更简易方法。
|