2011-03-21 53 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%的这个问题。