数据访问对象(DAO)是否应该委托给其他DAO以提高可读性?

Hoo*_*lum 2 java database dao design-patterns

是否更好地将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
   }
}
Run Code Online (Sandbox Code Playgroud)

因为我读到DAO应该:

  • N + 1问题.
  • 最小化SQL调用的数量.
  • DAO不应该委托给其他DAO.

这是否意味着我必须在每个DAO中重复相同的过程,而不是仅仅因此委托它独立于其他DAO?

小智 5

一个常见的事情是使用服务来调用不同的daos注入数据的需要.在这种情况下,这似乎更合乎逻辑,因为它实际上是业务逻辑,因此最好在数据库层中尽可能少地使用它