Dúvida de performace de objetos na memória  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
juloko666
JavaChild
[Avatar]

Membro desde: 19/07/2005 15:29:36
Mensagens: 127
Offline


Olá, em meu projeto tenho uma classe Funcionario, que é composta por diversas classes que por sua vez são compostas ou agregadas por outras classes.

Em um case de meu sistema o USUÁRIO pode ter mais de um registro e ser mais de um FUNCIONARIO, então tenho um combo que lista qual o resgistro ele vai utilizar. Mas para montar este combo eu instancio um objeto Funcionario, insiro-o num List<FuncionarioBean> e utilizo somente o atributo registro(que pego do banco de dados).Depois que ele seleciona o FUNCIONARIO(registro) que vai utilizar, refaço a pesquisa obtendo(novamente do banco de dados) todos os dados daquele FUNCIONARIO(registro).

Acho que essa não é a forma mais eficaz de se fazer isso(Instanciar uma classe grande e so utilizar 1 atributo).

Será que faço uma classe, com menos atributos, só para Listar os registros do Funcionario?

Grato....

T+
[Thumb - Diagrama de Classe -Cadastra Funcionario.jpg]
 Nome do arquivo Diagrama de Classe -Cadastra Funcionario.jpg [Disk] Download
 Descrição
 Tamanho 230 Kbytes
 Baixado:  76 vez(es)


"...devagar é que não se vai longe..." - Bom Conselho (Chico Buarque)
[Email] [MSN]
marciosantri
Virtual Machine Man
[Avatar]

Membro desde: 02/03/2007 12:32:35
Mensagens: 567
Localização: Goiânia, Goiás
Offline

Se vc é obrigado a ler um objeto Funcionario para montar o combo, pq vc não o mantém na memória até a seleção? Pq ao invés de ir ao banco selecionar a mesma coisa, vc retorna a apenas o funcionário na posição da seleção que foi feita no combo sem a necessidade de busca.

Não sei se entendi bem seu problema nem estou vendo seu código (fica mais complexo assim) mas creio que seja por aí.

Agora se você quer na verdade ter mais performance, aí é melhor dividir as coisas. O que vc deve mensurar é até que ponto a performance é mais importante que a utilização de uma classe única.

leroicotidiano.blogspot.com

foliveira81
JavaGuru

Membro desde: 10/09/2006 21:57:52
Mensagens: 204
Offline

Acho que vc esta correto sim a melhor coisa é trabalhar com os objetos de persistencia ou pojos como achar melhor, se for via web passe sempre pelo request pois quanto menos usar session melhor !

Att

Fernando Oliveira
[MSN]
hover
Debugger

Membro desde: 23/07/2007 10:25:36
Mensagens: 63
Localização: SP
Offline

Eu faria da seguinte forma:

o Método find() do DAO retornaria uma lista de funcionários, mas sem seus relacionamentos (Endereço, cargo, etc).

e o Método selectByPk() do DAO retornaria um FuncionarioBean totalmente populado.

Particularmente não gosto de criar beans específicos para uma tela, acho muito melhor manter um bean por entidade do sistema, como você fez no modelo. Porém tem casos onde o desempenho é crítico.

SCJP 5
grustk
JavaBaby

Membro desde: 06/04/2006 14:32:39
Mensagens: 92
Localização: Sampa
Offline

Acho que você poderia dar uma olhada no lazy-load do hibernate. Não sei qual framework, isso se você está usando algum framework, você está usando na camada de persiência mas acho que daria uma boa idéia de como ter menos objetos em memória.
A idéia geral é isso que o hover falou. Mas de fato todas as buscas retornariam somente o bean referente ao DAO, e quando você chama algum método que resgata uma agregação ela é populada. Seria algo como você só tem em memória, o que você está usando ou usou em algum momento do processamento da requisição.

Não quero saber se o pato é macho ... EU QUERO O OVO !!!!
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team