O problema era com EJB 2, na época do j2ee e tal, era um tal do BOLOVO
pra lá BOLOVO pra cá e quase nunca os objetos trafegavam entre as
camadas(tiers), agora com soa e webservice ta fácil.
Baseado em minha experiência, sempre utilizo entidades do domínio,
quando por alguma necessidade específica(relatórios, transporte e
simplificações), a classe de serviço específica, cria os VO
necessários, exemplo:
ProdutoService, manipula produto e seus relacionamentos/
responsabilidades, mas para alguns relatórios, não são necessários
todas as informações como por exemplo, preço, histórico de preço,
venda, estoque e etc, então é criado um
List<ProdutoVO>converteProtutoVO(List<Produto>), dessa forma um
Produto Light, o nosso querido VO(Value Object) é utilizado, ele não é
um objeto do domínio, mas uma simplificação uma abstração ou até pode
encapsular/agregar outros objetos;
Nesta abordagem os objetos de domínio(entitys da vida) já estão em
memória e uma rápida transformação é realizada.
Para casos onde mais desempenho é necessário, o próprio serviço,
quando recuperar os dados do banco, já trará apenas os necessários,
exemplo
createQuery("SELECT new ProdutoVO e por ai vai.
Agora, cuidado com o transient, se estão adicionando campos na
entidade que não tem a ver com o domínio e sim com controle e visão é
um problema, exemplo clássico, boolean selecionado, marcado e etc,
informações da camada view e controller, que poderiam ser contornado
com um <Boolean,Produto>.
Outro problema é a falta de coesão, se estão usando objetos leves, as
decisões, tranformações e regras de negócio devem estar na classe de
serviço, exemplo o ProdutoService. Produto não teria um transiente,
getHistórico de Vendas, o local correto, segundo as melhores práticas
seria em ProdutoService, onde as regras de negócio e colaboração com
objetos ricos são realizadas.
On 2 nov, 12:25, Assis Júnior <
assisp...@gmail.com> wrote:
> Cara essa questão do @Transite é uma questão polêmica.
> Já trabalhei em um sistema onde usavam muitos transientes e a
> manutenção é extremamente complicada. Quando vc sai da funcionalidade
> que gerou a necessidade do transiente não sabe mais nem porque ele
> existe.
>
> Não recomendo o transiente para satisfazer somente a view. Dá para
> criar melhores soluções nessa camada ou mesmo no managed bean.
>
> 2009/11/2 Walter Mourão <
walter.mou...@gmail.com>:
>
>
>
>
>
> > Olá amigos,
>
> >> Alto nível a discussão. Muito legal!!!
> >> Concordo com o Rafael Ponte. DTO multiplica a quantidade de classes
> >> necessárias na aplicação, dificulta o desenvolvimento e a manutenção.
> >> Só valerá a pena se houver divisão absoluta entre as camadas. Com EJB
> >> 3 não vale a pena.
>
> > Concordo que deve ser um muito chato ficar escrevendo DTOs na mão. Eu os uso
> > sempre, pois gosto de manter os serviços bem desconectados da implementação
> > da persistência e com assinatura bem definida.
> > Não entendi porque "com EJB 3 não vale a pena"... o que ele traz de
> > diferente nesse sentido ?
>
> > Sds,
>
> > Walter Mourão
> >
http://waltermourao.com.br
> >
http://arcadian.com.br
> >
http://oriens.com.br
>
> > 2009/11/1 L3Lo <
wsama...@gmail.com>
> >> > Rafael Pontehttp://www.rponte.com.br-Ocultar texto das mensagens
> >> > anteriores -
>
> >> > - Mostrar texto das mensagens anteriores -
>
> --
> Atenciosamente,
> Assis júnior
> SCJP 5.0 Certified- Ocultar texto das mensagens anteriores -