Strategy 3.

I would basically have a DAO that handles the search query
and returns a collection of value objects for the related use case.
When the user clicks on a specific employee, then render the
details using your employee DTO.

As far as patterns are concerned you may want to take a look
as the ValueObjectAssembler pattern or the TransferObjectFactory 
patterns. 

hth,

robert

> -----Original Message-----
> From: Matthew J. Vincent [mailto:[EMAIL PROTECTED]
> Sent: Monday, August 16, 2004 10:09 AM
> To: Struts Users Mailing List
> Subject: Re: [OT] DAO ... where to draw the line?
> 
> 
> LAST <bump>.  I promise!
> 
> Thanks!
> 
> >> Hi all,
> >>
> >> Thanks for the info.  Here's another issue.
> >>
> >> What if I have an employee search screen that wants to show only some 
> >> of the information of an employee (not all).  What do you do then?
> >> 1. Instanatiate an Employee object and only fill in the relative 
> >> information?  Keep in mind that this could be just employee name and 
> >> location on the search results screen and then when the user chooses 
> >> which employee to view I need to get all of the employee information.
> >>
> >> 2.  Instantiate an Employee object and fill out all the information 
> >> even though you won't be needing most of it on the search results 
> >> screen?
> >>
> >> 3.  Create 2 DTOs, one called Employee and one called EmployeeSearch 
> >> DTO.  The EmployeeSearch DTO only stores what needs to be shown on 
> >> the search results screen and the EmployeeDTO holds all the 
> >> information for what needs to be shown on the detail screen?
> >>
> >> 4.  Something else... Another pattern, etc?
> >>
> >> Thanks!
> >>
> >> Matt
> >>
> >>
> >>
> >> Navjot Singh wrote:
> >>
> >>> 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]

Reply via email to