JPA associação preguicosa (Lazy)

5 respostas
ercardoso

olá turma,
estou usando JPA e tow usando associacao preguicosa… (lazy), soh q como meu controller faz a consulta e retorna o pojo da entidade ele auto fexa a sessão… ou melhor no metodo q faz a consulta no banco ele abre e fexa apos a conclusao… mas soh q eu preciso tah com essa sessao abertap ra acessar as associacoes! tem ideia de resolver isso? bom, minha ideia eh adicionar os metodos open e close no controller e assim na camada view ele gerencia qnd abre e qnd fexa o msm… ou então criar VO independente dos pojos (retrabalho). OBS: desligando o lazy acaba dando erro por ter muitas associações.

5 Respostas

guilherme.chapiewski

Crie um Filter na sua aplicação para abrir e fechar a session, assim até o fim da requisição a Session estará aberta.

ercardoso

Quem iriah usar esse filter o controller. mas não é obrigação do controller abrir e fexar sessão de persistencia de dados. tow pensando em criar DTO’s separados dos pojos das entidades. mas eu axo isso burrice pq um pojo eh um transfer object!

guilherme.chapiewski

Não necessariamente. Veja: http://hibernate.org/43.html

ercardoso

Interessante o filter gui. então não seria um erro conceitual criar metodos de gerenciamento da sessão no controller certo? e até creio que pra manutenção , migração algo do tipo vai está mais simples.

Valeu pela dica.

guilherme.chapiewski

Calma :slight_smile:

Repare o seguinte, o controller é um… digamos… controlador :slight_smile: Ele é burro, não sabe fazer nada, ele simplesmente delega coisas para a camada de negócio da sua aplicação e organiza os dados para que a view seja montada. SÓ ISSO.

Para mais prá[gma]tico, o negócio tem que ser de tal forma que se um dia você resolvesse criar um interface swing e quisesse usar a mesma camada de negócios sem mudar um fio de cabelo da aplicação deveria ser possĩvel!

Então se você coloca este tipo de lógica no controller ele deixa de ser só um controller e fica “inteligente demais para o meu gosto”.

Portanto conclui-se que não é certo gerenciar a abertura de sessions no controller.

Criado 15 de fevereiro de 2007
Ultima resposta 15 de fev. de 2007
Respostas 5
Participantes 2