> -----Original Message----- > From: Matthew J. Vincent [mailto:[EMAIL PROTECTED] > Sent: Wednesday, August 11, 2004 8:21 AM > To: Struts Users Mailing List > Subject: [OT] DAO ... where to draw the line? > > > [OFF TOPIC] > > I know this is a struts forum, but as struts developers using DAOs, > where do your DAO implementation draw the line?
Typically, I try to keep things as modular as possible. This typically means that if I'm using JDBC, as opposed to Hibernate, I put the object graph together in the business layer, rather then try and do it in the DAO layer. This allows me some flexibility in what I return back. I can have a business method that will only return the employee, as opposed to the entire graph if my view only needs to see the employee and the entire graph might prohibitive ( time/space) to fully extract. If you put everything into the DAO it can be somewhat more troublesome to do, possible certainly, but it always seems to me that how much data you pull back is a business requirement related to the server power (memory/speed) you have, not a function of the data itself. > > For example: > > Let''s say I have three tables: > > Employee (contains employee_id, employee_name, and dept_id) > Department (contains dept_id, dept_name, loc_id) > Location (contains loc_id, location_name) > > How deep do your classes go to replicate the data? > > Do you do this... > > public class Employee { > private int id; > private String name; > private int deptId; // just the id > > // .. implementation details > } > > or do you do this > > public class Employee { > private int id; > private String name; > private Department dept; // all of the data > > // .. implementation details > } > > and so on and so on. Class Department has the same type of > problem. > Does it hold just the id for location or a variable class Location? > > Should DAOs just fill in the id (keys) so it is up to the application > using the DAOs to get the Employee class, then the Department > class, and > the the Location class like: > > Employee emp = EmployeDAO.getEmployee(1); > Department dept = DepartmentDAO.getDepartment(emp.getDeptId()); > Location loc = LocationDAO.getLocation(dept.getLocId()); > System.out.println(emp.getEmpName() + " works in " + > loc.getLocationName()); > > or > > Employee emp = EmployeDAO.getEmployee(1); > System.out.println(emp.getEmpName() + " works in " + > emp.getDept().getLoc().getLocationName()); > > Now this is just a simple example, but where do you draw the > line? It's > possible to go on and on and on and cycle back to employee... > > Any thoughts, links, tips, best practices, whatvere would be helpful! > > Thanks! > > Matt > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]