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

全面研读EJB2.0(2)

http://www.rdxx.com 01年11月17日 11:08 互联网 我要投稿

关键词: EJB

全面研读 EJB 2.0
2001-04-05· --·wsdn

     EJB 1.1 中的 CMP 模型

  在 EJB 1.1 中,bean 开发人员负责将 bean 类的持久性字段声明为 Java 基本类型或可序列化类型。下列示例显示了一个 Employee 企业级 bean 类,它是按 EJB 1.1 定义的,带有几个 CMP 字段:

  // Employee bean 类
  public class EmployeeBean implements
  java.ejb.EntityBean {
  // 实例字段
  EntityContext ejbContext;

  file:// 容器管理的字段
  public int identity;
  public String firstName;
  public String lastName;
  public double salary;
  public Address address;

  public Integer ejbCreate(int id, String fname,String lname){
   identity = id;
   firstName = fname;
   lastName = lname;
   return null;
   }
   ...
  
   // Address 从属类
  public class Address implements Serializable{
  public String street;
  public String city;
  public String state;
  public String zip;
 }

  当将关系数据库用于持久性时,基本字段如 identity、firstName、lastName 和 salary,很容易持久化,因为它们很好地映射为 SQL 类型,如 INTEGER、CHAR 和 DOUBLE。

  在 EJB 1.1 中,CMP bean 的 XML 部署描述符提供 cmp-field 元素,用以标识此 bean 类中的持久性字段(容器管理的字段)。如下所示,cmp-field 元素用来区分写入数据库的字段和不写入数据库的字段。例如,ejbContext 字段就不包括在容器管理的字段的列表中,因此它不是持久性字段。

  <ejb-jar>
  <enterprise-beans>
  <entity>
  <ejb-name>EmployeeEJB</ejb-name>
    ...
  <persistence-type>Container</persistence-type>

  ...
  <cmp-field><field-name>identity</field-name></cmp-field>

  <cmp-field><field-name>firstName</field-name></cmp-field>

  <cmp-field><field-name>lastName</field-name></cmp-field>

  <cmp-field><field-name>salary</field-name></cmp-field>

  <cmp-field><field-name>address</field-name></cmp-field>

   ...

  容器提供者提供一种工具,用来将 bean 的持久性字段映射到数据库表中的列,通常每个 bean 对应一个表。但是,可序列化的类型,如 Address,就比较难于持久化。在 EJB 1.1 中,没有标准的方法将可序列化的对象映射到关系数据库。虽然 Address 类有其自身的字段集,但 XML 部署描述符并没有提供一种机制,来将这些字段映射到数据库。在大多数情况下,人们期望将可序列化的对象(如 Address)作为二进制类型(有时称为 blob 类型)持久化到某个数据库表中。

  由于实体 bean 的数据方案逐渐复杂起来,所以这个问题也变得严重了。例如,Employee bean 可能有多个类似于 Address 的子对象,如 Benefits 和 JobPosition。这些子对象称为从属对象,可以形成关系数据库中跨几个表的复杂对象图。另外,EJB 1.1 中的 CMP 在很大程度上不足以持久化与其它 bean 的关系。在 EJB 1.1 中,如果某个 bean 准备维持与另一个 bean 的关系,则容器会自动将主关键字或句柄用作一个链接。与某些其它 bean 的关系其性质可能是双向的,或者要依赖于一些不易用主关键字或句柄来表示的字段,为了保持与这类 bean 的关系,上面的办法已被证明是一种远未完善的机制。

  EJB 2.0 的 CMP 模型

  在 EJB 2.0 中,CMP 实体 bean 和持久性管理器之间的新合约,使您能够在实体 bean 中定义更复杂的、可移植性更强的关系,包括 bean 与 bean 之间、bean 与从属对象之间、甚至从属对象与从属对象之间的关系。

上一页 下一页

 
 
标签: EJB 打印本文
 
 
  热点搜索
 
 
 



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