2011-03-21 123 views
2

我有一個Struts和Hibernate項目,哪一個是以下問題的有效解決方案?

  1. 從動作類,我需要調用DAO,從數據庫中獲取數據。

  2. 我需要表單類中的所有字段傳遞給DAO中的方法。

該窗體有大約15個字段,都是String類型。

哪個更好或更高效:將字段直接傳遞給DAO或整個FORM對象作爲參數?

回答

2

想象的方法有15個字符串參數:

public void save(String name, String firstName, String email, String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ...) 

哦,看,水平滾動條。還有一個非常小的按鈕。嗯。這看起來很可疑。不要這樣做。

如果參數對象中的參數超過3個或4個,則最好收集參數。長參數列表會產生以下問題:

  1. 您不能忽略任何參數。所以如果你不需要其中的任何一個,你就必須通過很多null或其他東西。

  2. 參數的順序是固定的。如果你需要改變它,或者添加參數,你總會遇到麻煩。如果你犯了一個錯誤(你會的),沒有簡單的方法找出在哪裏。

    如果使用setter和getters參數對象,則可以按任意順序填充值。

  3. 參數沒有名稱。例如:

    method("23894623"); 
    

    這是什麼意思?看這裏:

    Params params = new Params(); 
    params.setPhoneNumber("23894623"); 
    method(params); 
    

    哦,這是一個電話號碼。現在很明顯。

0

在方法或基於集合的數據結構中傳遞15個參數容易出錯並且難以維護。

您可以簡單地將您的pojo(Form bean)傳遞給Dao方法,並構造查詢。作爲一個獎勵冬眠提供hibernate Query by Example API這可能適合你100%的這個問題。

相關問題