Separação entre camadas

5 respostas
ops.rio

Pessoal,

estou com uma dúvida em relação aos meus entity beans.

Gostaria de saber tem algum problema de utilizar os meus entity beans trafegando até a camada de apresentação.

e se eu tivesse um acesso externo via webservice, teria algum problema? alguém visualiza algum problema?

valeu pessoal.

5 Respostas

fantomas

Vc não deveria colocar detalhes do modelo na apresentação, minha opinião. Porem tenho visto alguns casos onde são utilizados JSF, Seam, EJB3 e o pessoal “anexou” entities nos artefatos ref. a apresentação. Não achei que ficou muito ruim pois o entity éra um pojo simples e não necessitava de enhuma transformação para ser utilizado na view logo figou bem simplificado e facilitado.

O risco que percebo neste caso é que no inicio as coisas podem ficar até interessante mas depois pode vir outra pessoa ou vc mesmo e começar a colocar/gerar operações/métodos nestes entities tipicas de view e bagunçar tudo.

flws

ops.rio

sim, então, a minha preocupação inicial era com o fato de passar detalhes do modelo para a camada de apresentação, porém, eu teria que “duplicar” as classes entity beans como pojos (1:1) pq teóricamente são os mesmos atributos, e estamos partindo do princípio que estas classes não teriam métodos.

Estamos utilizando JSF e estamos pensando em mapear os eventos de tela como métodos de uma camada facade, neste caso, acho que não correremos o risco de incluir métodos/eventos de tela no entity.

legal o meu pensamento não está tão fora da realidade :slight_smile:

Emerson_Macedo

A palavra Entity Beans me deixou um pouco confuso sobre o problema. De qualquer forma, vamos explorar ambos os cenários:

EJB3

  • No EJB3 não existem mais Entity Beans. A JPA persiste POJOs. Neste caso, não existe nenhum problema em trafegar os objetos até a camada de apresentação. Existem alguns colegas que não gostam desse acoplamento e usam algumas abordagens como (1) duplicar o objeto para desacoplar ou (2) utilizam uma interface e (3) Usam um Memmento.

EJB2

  • No caso do EJB2, quando você retorna um Entity Bean para o Web Container, na verdade é retornado um Stub, pois geralmente (eu diria quase sempre) o container EJB e Web rodam em JVMs diferentes. Quando você chama getXXX() para retornar alguma coisa nesse stub, na verdade é feito uma chamada remota para obter o dado no objeto real, que está no container EJB. Nesse caso, o uso de DTOs se faz necessário.

Se você estiver na segunda opção (EJB2), fuja disso assim que puder…

Andre_Brito

Opa.
Acho que a pergunta pode parecer bastante idiota, mas se eu estivesse usando MVC, não seria errado “pular” o controller para enviar direto ao view?

Emerson_Macedo

Você não vai pular o controller. Este que vai conversar com o componente model e após isso vai devolver o resultado pro componente View. E num MVC “de verdade”, a view observaria o model, o que na web ainda é um pouco complicado de se fazer, apesar de algumas tentativas com commet (i.e. reverse ajax)

Ah, e é bom lembrar que MVC e camadas são coisas diferentes…

Criado 5 de novembro de 2008
Ultima resposta 6 de nov. de 2008
Respostas 5
Participantes 4