hi matthew,

I wont say that you go with one or other of your approaches.

It depends upon type of assosciation that 2 entities may share. They may have aggregation or composition relationship. Depending on that your DAO implementation will decide that you need to get ONLY id or the composite objects.

Let me explain.

Say you have class named ORDER ad ORDER_DETAILS. (consists-of relationship) Order without order details is nothing. So you may get the OrderDetails object as well when you get Order.

Now say you have EMPLOYEE and DEPARTMENT. (has-a relationship) EMPLOYEE *may* still exists with or without department. So you may get only id of department and later fetch the department.

Think in employee table, you have relationship (reports-to). If you specify this relation as composition, you may go on fetching the objects all the way up to the organization chart ;-)

Do i make sense?
Navjot Singh

-----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?

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]


.




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to