将一个dao的某些部分委托给另一个dao以便它更具可读性和紧凑性,这样更好吗?以及更少的重复代码?
例子
class StudentDAOImpl implements StudentDAO {
public Student findById(int studentId) {
// some code here to get student
}
}
class SemesterEnrollmentImpl implements SemesterEnrollmentDAO {
public SemesterEnrollment findSemesterEnrollmentByStudent(int studentId) {
// delegating finding of student to StudentDAO
StudentDAO studentDao = new StudentDaoImpl();
Student student = studentDAO.findById(studentId);
// code to get SemesterEnrollment using student instance
}
}
因为我读到daos应该:
n+1问题。
最小化sql调用的数量。
dao不应该委托给其他dao。
这是否意味着我必须在每个dao中重复相同的过程,而不是仅仅为了让它独立于其他dao而授权?
最佳答案
一个常见的事情是使用服务调用不同的dao来注入数据。在这种情况下,这似乎更符合逻辑,因为实际上是业务逻辑,而imo最好在数据库层中尽可能少地使用它。