我有一个从ManagedBean调用的方法,如下所示
getemployeeService().findEmployees(qData);
qData
只是一个用于传递lazyload load
方法参数的类。
EmployeeQueryData qData = new EmployeeQueryData(start, end, sortField, order, filters);
我想在DAO课程中将一个for参数传递给findEmployees
方法,以便根据deptNo
获取员工。
我怀疑是否应该传递另一个参数,例如
getemployeeService().findEmployees(qData, String deptNo);
或将Employees类传递为
getemployeeService().findEmployees(qData, Employees emp);
在DAO中我调用deptNo
为
emp.getDeptNo
最佳方法和做法是什么?任何建议和见解都非常值得赞赏。
答案 0 :(得分:1)
这两种方法都有利有弊,但您应该考虑您的计划的业务需求发生变化的可能性。
例如,如果将来需求发生变化,说“我们不仅应该通过他/她的depno定位员工,还需要找到employeeId”,那么第二种方法将使您更容易实现变更。使用第一种方法,您必须更改findEmployees方法的每次调用
答案 1 :(得分:1)
我认为通过部门更有意义。因为当我们说DAO层时,我们只看到必须处理数据的视角。我们应该在业务逻辑层中包含emp.getDeptNo()。
但是谈论可扩展性,如果未来你可能想要发送一些其他的参数说dept,DOJ等等。因此,在这种情况下,您可以创建另一个类,例如Criteria,并在该类中放置params字段,并将此类的Object传递给find()方法。