Enterprise JavaBeans 3.0仕様入門
Pages: 1, 2, 3, 4, 5, 6

エンティティBean

EJB 3.0のエンティティBeanは軽量の永続ドメインオブジェクトです。エンティティBeanは @Entity注釈で明示され、エンティティBeanクラス内のプロパティとフィールドのうち、 @Transient注釈が付いていないものはすべて永続的とみなされます。エンティティBeanの永続フィールドは、JavaBean形式のプロパティを通じて、または単にpublic/protectedのJavaクラスフィールドとして公開されます。

エンティティBeanはその状態を表すためのヘルパクラスを使用できますが、これらのクラスのインスタンスは永続アイデンティティを持ちません。そ の代わり、それらのインスタンスの存在は、所有側のエンティティBeanインスタンスと強く結び付いています。また、これらのオブジェクトは複数のエン ティティ間で共有できません。

ホームインタフェース

エンティティBeanにはホームインタフェースは不要です。

ビジネスインタフェース

エンティティBeanにはビジネスインタフェースは不要です。その実装はオプションです。

エンティティクラス

  • エンティティクラスには、エンティティであることを示す注釈を付ける必要があります。または、エンティティであることをXML記述子で定義する必要があります。
  • エンティティクラスは引数なしのコンストラクタを持つ必要があります。また、それ以外のコンストラクタを持つこともできます。
  • 引数なしのコンストラクタはpublicまたはprotectedである必要があります。

永続フィールドとプロパティ

単値の永続プロパティについて、メソッドシグネチャは次のようになります。

  • T getProperty()
  • void setProperty(T t)

コードサンプル

次のコードサンプルで示すように、エンティティBeanには @Entityタグの注釈が付きます。サンプルでは、いくつかのメンバー変数と、それらに対応するセッターおよびゲッターを定義しています。このコードサンプルでは、CMR関係(コンテナ管理による関係)に注釈を付ける方法も示しています。

1対多の関係は @OneToManyタグを使って示します。この例では、 Customer Beanと Orders Beanの間に1対多の関係があります(1人の顧客が複数の注文を出す可能性があります)。

同様に、 CustomerPhones Beanとの間に多対多の関係を持ちます。一部のビジネスメソッドはビジネスインタフェースで定義され、Beanで実装されます。たとえば、 addPhone()は電話レコードを追加し、それを顧客と関連付けます。

@Entity
public class Customer implements Serializable {
  private Long id;
  private String name;
  private Address address;
  private Collection orders = new HashSet();
  private Set phones = new HashSet();

  // No-arg constructor
  public Customer() {}
  @Id
  public Long getId() {
    return id;
  }
  public void setId(Long id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public Address getAddress() {
    return address;
  }
  public void setAddress(Address address) {
    this.address = address;
  }
  @OneToMany
  public Collection getOrders() {
    return orders;
  }
  public void setOrders(Collection orders) {
    this.orders = orders;
  }
  @ManyToMany
  public Set getPhones() {
    return phones;
  }
  public void setPhones(Set phones) {
    this.phones = phones;
  }
  // Business method to add a phone number to the customer
  public void addPhone(PhoneNumber phone) {
    this.getPhones().add(phone);
    // Set the phone's ref to this customer
    phone.setCustomer(this);
  }
  }
}

Pages: 1, 2, 3, 4, 5, 6

Next Page »