public abstract class EmployeeBean implements javax.ejb.EntityBean {
EntityContext ejbContext;
// CMP 欄位
public abstract void setIdentity(int identity);
public abstract int getIdentity();
public abstract void setFirstName(String firstName);
public abstract String getFirstName();
public abstract void setLastName(String lastName);
public abstract String getLastName();
// 關聯欄位 (Dependent Object)
public abstract void setContactInfo(ContactInfo info);
public abstract ContactInfo getContactInfo();
}
<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>
...
</entity>
<dependents>
<dependent>
<dependent-class>ContactInfo</dependent-class>
<dependent-name>ContactInfo</dependent-name>
<cmp-field>street</cmp-field>
<cmp-field>city</cmp-field>
<cmp-field>state</cmp-field>
<cmp-field>zip</cmp-field>
<cmp-field>homePhone</cmp-field>
<cmp-field>workPhone</cmp-field>
<cmp-field>email</cmp-field>
</dependent>
</dependents>
<relationships>
<ejb-relation>
<ejb-relation-name>Employee-ContactInfo</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>employee-has-contactinfo</ejb-relationship-role-name>
<multiplicity>one</multiplicity>
<role-source><ejb-name>EmployeeEJB</ejb-name></role-source>
<cmr-field>
<cmr-field-name>contactInfo</cmr-field-name>
<cmr-field-type>ContactInfo</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>contactinfo-belongs-to-employee</ejb-relationship-role-name>
<multiplicity>one</multiplicity>
<role-source><dependent-name>ContactInfo</dependent-name></role-source>
</ejb-relationship-role>
</ejb-relation>
</relationships>
// Remote 介面曝露領域物件
public interface Employee extends javax.ejb.EJBObject {
public Address getHomeAddress();
public void setHomeAddress(Address address);
// 其他基本欄位...
}
// Bean 實作轉換
public abstract class EmployeeBean implements javax.ejb.EntityBean {
public Address getHomeAddress() {
ContactInfo info = getContactInfo();
Address addr = new Address();
addr.street = info.getStreet(); addr.city = info.getCity();
addr.state = info.getState(); addr.zip = info.getZip();
return addr;
}
public void setHomeAddress(Address addr) {
ContactInfo info = getContactInfo();
info.setStreet(addr.street); info.setCity(addr.city);
info.setState(addr.state); info.setZip(addr.zip);
}
}
| 關聯類型 | Bean 端型別 | 範例 |
|---|---|---|
| Bean ↔ Dependent (1:1) | Dependent 類別型別 | `setBenefit(Benefit)` |
| Bean ↔ Dependent (1:N) | `Collection` / `Set` | `setContactInfos(Collection)` |
| Bean ↔ Bean (1:1) | Remote 介面型別 | `setSpouse(Person)` |
| Bean ↔ Bean (1:N) | `Collection` / `Set` | `setChildren(Collection)` |
| Dependent ↔ Dependent | 同上 | `Benefit ↔ Salary` (1:1), `Benefit ↔ Investment` (1:N) |
未來版本擬支援 `Map`、`List` 回傳型別。