I am confused of the interactions between value objects (generated by DAO's) and the business domain objects. I understand value objects and their use across the web and ejb tiers to reduce network traffic. Do the business domain objects only exist in the web tier? And do the business domain objects use a value object to get their data? An eample might be useful. If there is a CustomerVO (value object), is it passed in the constructor to the Customer business domain object? If the Customer business domain object has an array of Address objects, are the address objects create with the CustomerVO data? Where should the business domain objects get created (with the value object?) data ?
IMHO In UML Distilled they speak of three perspectives: conceptual, specification and implementation. I believe BDO are in conceptual drawing. I believe VO are in implementation phase. I would also say a Customer could create a CustomerVO. If you wanted to use a CustomerVO to instantiate a Customer that could happen too. This looks like serialization and cloning. What about the issues of deep copying and shallow copying? You're missing some of the concepts of the J2EE culture. In general I would suspect VOs are only created and passed about. They are not generally used in constructors. EJB's don't have constructors. HTH