VO dentro de VO, pode?

2 respostas
M

Galera,

seguinte, estou desenvolvendo uma aplicacao envolvendo struts/ejb/hibernate.

Existe uma funcionalidade na aplicacao que eh buscar um usuario cadastrado no sistema de acordo com algum filtro.

A minha classe Usuario tem como atributos:

public class Usuario 
{ 
   private String idUsuario; 
   private String nome; 
   private String cpf; 
    ... 
   private Endereco endereco; 
   private Perfil perfil; 
    ... 
  // get/sets 
}

Minha classe Endereco

public class Endereco 
{ 
   private String idEndereco; 
   private String bairro; 
   private String cep; 
    ... 
  // get/sets 
}

Minha classe Perfil

public class Perfil 
{ 
   private String idPerfil 
   private String nome; 
    
  // get/sets 
}

Todos esses objetos sao persistidos no banco, em tabelas separadas (uma tabela so de usuario, outra so de endereco e outra so com o perfil).

[b]Minha duvida eh:

Eu vou retornar para o cliente um objetoVO contendo os dados do usuario.
Eu posso ter um objeto UsuarioVO que possui um obj. EnderecoVO e um PerfilVO ? [/b]

Existe outra forma de modelar isso? Nao quero colocar todos os atributos do EnderecoVO e do PerfilVO junto com os do UsuarioVO, pq pode ser q futuramente um usuario possa ter mais de um endereco. Logo o retorno da busca de um usuario envolveria uma collection de enderecos.

Espero q eu tenha conseguido me explicar.
Valeu galera
Marcos

2 Respostas

D

Sua implentação está correta. Se você colocar todos os atributos na classe Usuario você está contribuindo para que seu projeto se torne uma salada e uma futura atualização de seu sistema fique mais complicada.

J

o VO faz o papel de transporte dos dados entre as camadas… voce pode ter os dados que quiser e transporta-los da forma que quiser, voce poderia por exemplo ter coleçoes de endereços para o mesmo usuario ou mesmo de por perfil… tudo depende de como for o seu projeto. nao ha maneira certa ou errada para isso.

Criado 21 de outubro de 2004
Ultima resposta 22 de out. de 2004
Respostas 2
Participantes 3