我有一个struts和hibernate项目,
从动作类中,我需要调用DAO,从数据库中获取数据。
我需要将表单类中的所有字段传递给DAO中的方法。
表单有大约15个字段,都是String类型。
哪个更好或更有效:将字段直接传递给DAO,或将整个FORM对象作为参数传递?
答案 0 :(得分:2)
想象一个包含15个String参数的方法:
public void save(String name, String firstName, String email, String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ..., String ...)
哦,看,一个水平滚动条。还有一个很小的按钮。嗯。这看起来很可疑。不要这样做。
如果参数对象中的参数超过3或4,则最好在参数对象中收集参数。长参数列表会产生以下问题:
您不能省略任何参数。因此,如果您不需要其中任何一个,您将不得不传递大量null
s。
参数的顺序是固定的。如果您需要更改它或添加参数,您总是遇到麻烦。如果你犯了错误(而且你会),没有简单的方法可以找到答案。
如果您使用带有setter和getter的参数对象,则可以按任何顺序填写值。
参数没有名称。例如:
method("23894623");
这是什么意思?看这里:
Params params = new Params();
params.setPhoneNumber("23894623");
method(params);
哦,这是一个电话号码。现在很明显了。
答案 1 :(得分:0)
在方法或基于集合的数据结构中传递15个参数容易出错且难以维护。
你可以简单地将你的pojo(Form bean)传递给Dao方法,它将构造查询。作为奖励,hibernate提供hibernate Query by Example API,这可能100%适合您解决此问题。