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

EJB 資料驗證最佳實踐:業務委派層做格式驗證,EJB 層做業務驗證

     編輯:J2EE

驗證類型劃分

  • 資料格式驗證:確保資料型別正確、數值範圍、模式匹配,不涉及業務規則
  • 業務規則驗證:基於業務規則(如 ISBN 對應實體書),需存取 EJB 層與資料庫

資料格式驗證:越靠近客戶端越好

放在 Business Delegate(業務委派) 的 setter 方法中:

  • 錯誤可即時回傳客戶端,無需經過 RMI、JNDI、遠端呼叫
  • 避免遠端異常開銷與不必要的業務邏輯執行
  • 程式碼範例:在 checkout(List books) 中檢查每個元素是否為 Book 實例

業務規則驗證:放在 EJB 實作類別中

  • 需存取其他 Entity/Session Bean、資料庫,涉及 JNDI 與 RMI 交易
  • 放在 Delegate 會造成過大開銷
  • EJB 層內部呼叫多為 VM 內最佳化,極快;且 Delegate 已完成格式驗證

程式碼示範:Delegate 中的格式驗證

public boolean checkout(List books) throws ApplicationException {
    for (Iterator i = books.iterator(); i.hasNext(); ) {
        Object obj = i.next();
        if (!(obj instanceof Book)) {
            throw new ApplicationException(
                ApplicationException.VALIDATION_ERROR,
                "Only Books are allowed in the input list");
        }
    }
    try { return library.checkout(books); }
    catch (RemoteException e) { throw new ApplicationException(e); }
}

結論

  • 格式驗證 → Business Delegate(靠近客戶端,快速回饋)
  • 業務驗證 → EJB 實作類(利用本地呼叫優勢,存取業務資源)
  • 分層驗證雖可行但不建議(重複邏輯、維護困難)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved