Как я могу сделать объект DAO собственностью другого DAO?Выполнение DAO: создание объекта DAO в качестве имущества другого DAO
Скажем, у меня есть объект Employee с имуществом Департамента
public class Employee {
public Department;
//setter and getters
}
Я имел этот интерфейс EmployeeDAO и DepartmentDAO с соответствующими реализациями
И я был DAOFactory
public abstract class DAOFactory {
// db connection instantiation here
public IEmployeeDAO getEmployeeDAO() {
return new EmployeeDAOImpl(this);
}
public IDepartmentDAO getDepartmentDAO() {
return new DepartmentDAOImpl(this);
}
}
У меня был сервлет, где экземпляр этого DAOfa ctory
public class EmployeeController extends HttpServlet {
public EmployeeController() {
super();
DBUtils dbInstance = DBUtils.getInstance("mysql");
System.out.println("DAOFactory successfully obtained: " + dbInstance);
// Obtain UserDAO.
employeeDAO = dbInstance.getEmployeeDAO();
departmentDAO = dbInstance.getDepartmentDAO();
jobDAO = dbInstance.getJobDAO();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
employees = employeeDAO.findAll();
request.setAttribute("employees", employees);
}
мой вопрос, как я могу отобразить объект отдела внутри employeeDAO или его реализации, когда я вызываю метод FindAll в employeeDAO?
У меня было что-то подобное в моей попытке картировать результаты:
private Employee map(ResultSet rs) throws SQLException {
Employee employee = new Employee();
employee.setEmployeeID(rs.getInt("EMPLOYEE_ID"));
employee.setFirstName(rs.getString("FIRST_NAME"));
employee.setLastName(rs.getString("LAST_NAME"));
Department department = new DepartmentDAOImpl().getDepartmentByID(rs
.getInt("DEPARTMENT_ID"));
employee.setDepartment(department);
return employee;
}
Но я думаю, что это неправильный подход. Может кто-то помочь мне с этим?
Почему это должно быть неправильным подход? Не работает ли работа так, как ожидалось? (Хотя я бы рассмотрел использование JPA вместо ручного сопоставления объектов, потому что он делает все dao для вас. И хотя у него есть абстракция более высокого уровня, чем расширение HttpServlets) – zapl
Потому что я непосредственно создаю экземпляр реализации DAO, который должен быть скрытым/или затененным интерфейсом DAO. Я стремился сделать это возможным, как только я вызову employeeDAO.findAll(); Я видел некоторые статьи о JPA тоже. Я планирую реализовать его в своих будущих проектах. –