首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EJB 設計模式(一):基礎 CMP Entity Bean

     編輯:Java 相關知識

最原始模式

由 JBuilder 等工具產生的預設 Entity Bean,每個欄位對應一對 getter/setter,全部宣告為 public CMP 欄位。

程式碼範例

public class CompanyBean implements EntityBean {
    EntityContext entityContext;
    public Integer comId;        // PK
    public String comName;
    public String comDescription;
    public Timestamp mutationDate;

    public Integer ejbCreate() throws CreateException { return null; }

    // 針對每個欄位的 getter/setter 皆暴露於 Remote Interface
    public Integer getComId() { return comId; }
    public void setComId(Integer comId) { this.comId = comId; }
    public String getComName() { return comName; }
    public void setComName(String comName) { this.comName = comName; }
    // ... 其他欄位同理
}

public class EmployeeBean implements EntityBean {
    EntityContext entityContext;
    public Integer empId;        // PK
    public Integer comId;        // FK
    public String empFirstName;
    public String empLastName;
    public Timestamp mutationDate;

    public Integer ejbCreate() throws CreateException { return null; }
    // 大量 getter/setter ...
}

嚴重缺點

  1. 細粒度遠端介面:讀寫一筆資料需 N 次 RMI 呼叫(N = 欄位數),網路延遲放大。
  2. 交易邊界破碎:每個 setter 可能觸發獨立交易,無法保證多欄位原子性。
  3. 無關聯表達:Employee 的 comId 僅為整數,無法導航至 Company 物件。
  4. 暴露內部結構:Remote Interface 直接映射資料表結構,耦合度極高。
  5. 效能極差:不適合生產環境,僅供原型驗證、快速測試使用。

適用場景

  • 快速應用開發 (RAD) 原型。
  • 單元測試、資料庫映射驗證。
  • 教學示範 CMP 基本運作。

演進路線圖

模式一 (基礎 CMP)
    ↓ 引入 Value Object 封裝傳輸
模式二 (DTO 模式)
    ↓ Entity Bean 繼承 Struct 消除重複
模式三 (繼承模式)
    ↓ Struct 新增 copyFrom() 一鍵複製
模式四 (複製優化)
    ↓ 處理 Bean 間關聯 (FK → 物件導航)
模式五 (關聯模式)

結語

模式一雖然缺點眾多,但它是理解 EJB 2.x CMP 演進的起點。每一個後續模式都針對前一模式的特定痛點優化,最終形成相對完整的實體 Bean 設計體系。現代開發中,這些問題由 JPA/Hibernate 自動解決(Entity 即 DTO、關聯導航、交易管理),開發者應理解歷史脈絡以避免重蹈覆轍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved