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

EJB 設計模式(三):Entity Bean 繼承 Value Object

     編輯:Java 相關知識

問題

模式二中 Entity Bean 與 Value Object (Struct) 存在大量重複欄位宣告,維護困難。

解決方案:繼承 Struct

public class CompanyBean extends CompanyStruct implements EntityBean {
    EntityContext entityContext;
    // 繼承自 CompanyStruct:comId, comName, comDescription, mutationDate
    // 皆可直接作為 CMP 欄位

    public Integer ejbCreate(CompanyStruct struct) throws CreateException {
        this.comId = struct.comId; // 設定 PK
        setData(struct);           // 複製其他欄位
        return null;
    }
    // getData()/setData() 實作同模式二
}

優點

  • 消除欄位重複宣告,單一來源原則。
  • CMP 容器直接存取繼承而來的 public 欄位。
  • Struct 異動自動反映至 Bean,減少同步錯誤。

缺點與限制

  • Entity Bean 繼承 Struct 導致所有欄位 public,破壞封裝。
  • Java 單一繼承限制:若需繼承其他基類則無法使用。
  • 仍未解決 Bean 間關聯(模式五)。
  • EJB 2.x 專屬模式,現代 JPA 採用組合 (@Embedded) 而非繼承。

程式碼對比

模式二模式三
Bean 另行宣告所有欄位extends Struct 繼承欄位
Struct 變更需同步 BeanStruct 變更自動生效
getData/setData 手動逐欄位同模式二,未優化複製

結語

模式三以繼承消除欄位重複,是模式二的自然演進。但繼承帶來的封裝破壞與單一繼承限制,提示我們在現代框架(JPA)中應改用組合方式嵌入 Value Object,兼得復用與封裝。

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