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]