Copy Helper (Access Bean)

Copy Helper Access Bean 具有和 Java™ Bean Wrapper 相同的基本性質,但它本身還引進了其他性質。

比方說,它已經過配合單一 Entity Enterprise Bean 實例來使用的最佳化過程。Copy Helper 和 Java Bean Wrapper 不同的是,它還包括一個單一 Copy Helper 物件,其中含有遠端 Entity Bean 的本端屬性副本。附註:只有本端用戶端視圖的 Enterprise Bean 沒有這項支援。

Access Bean 會使用 Copy Helper 物件,基本上,這些 Copy Helper 物件都是儲存在 Access Bean 內的使用者選取 Entity Bean 屬性的快本。這些屬性的 getter 和 setter 方法會直接處理本端快取記憶體,而不會去呼叫遠端的 getter 和 setter 呼叫。它提供的若干方法可以將快取記憶體沖寫至實際的 Enterprise Bean 資料庫中,以及從實際的 Enterprise Bean 重新整理快取記憶體。 這可以大幅改進擁有許多屬性的 Entity Enterprise Bean 的效能,因為發出單一遠端呼叫來同時取得和設定許多屬性,比每個屬性各發出一個遠端呼叫快得多。

當您建立 Copy Helper 時,會變更 Enterprise Bean 的遠端介面來繼承 CopyHelper 介面及 EJBObject 介面。當您建立 Copy Helper 物件時,您可以選取所有 Enterprise Bean 屬性,或只選取其中的一部分。 選取的屬性會儲存在 Enterprise Bean meta 模型中,如果您決定要變更選項的話,它們會重新顯示。

Copy Helper 物件儲存在 Access Bean 內。getter 和 setter 方法會委派給本端 Copy Helper 物件,而不是遠端 Enterprise Bean 物件。如果要在 Copy Helper 中確定遠端 Enterprise Bean 的變更,或要從遠端 Enterprise Bean 來重新整理本端 Copy Helper, 您的用戶端程式必須分別呼叫 commitCopyHelper() 和 refreshCopyHelper()。

getter 和 setter 方法必須根據定義 getter 和 setter 方法的 JavaBeans™ 慣例,定義給您的 Enterprise Bean 內容。 如果您沒有 getter 和 setter 方法,您將無法新增對應的欄位到 Copy Helper 中。 getter 和 setter 方法也不應擲出任何異常狀況。

只要 Enterprise Bean 的實例是 Access Bean 所建立的,索引鍵物件也會附隨使用者選取的 Enterprise Bean 屬性而儲存在 Copy Helper 快取記憶體中。如果要從 Access Bean 取得索引鍵物件,請利用 __getKey() 方法。

當您呼叫快取屬性的 getter 方法時,Access Bean 會遵循下列通訊協定:

  1. 如果快取記憶體是空的,或只含有索引鍵物件,就會利用 refreshCopyHelper() 來執行完整的快取記憶體重新整理。
  2. 如果快取記憶體不是空的,且沒有包含索引鍵物件,它就會先沖寫到 Enterprise Bean 中,以更新任何已設定的屬性,再完整重新整理。
  3. 屬性值是從快取記憶體中擷取而來。
使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.