Performance banco x java

Eu tava testando aqui e sem usar nenhum framework gostaria de saber se:

  • Vale mais a pena quando o programa rodar fazer um select * em um banco e deixar tudo dentro de coleções ou
  • Vale mais a pena sempre fazer um select?

Fiz um método que dava um select * na tabela e adicionava cada item em um ArrayList e este demorou menos de 1 segundo… Gostaria de saber qual vale mais a pena? Sempre select ou pegar os dados e manipular dentro do java mesmo?

Vlws!

SEMPRE, mas SEMPRE, select
até hj não vi nenhum banco relacional ser mais rápido trafegando dados pela rede do que filtrando no servidor…

[quote=Murl]- Vale mais a pena quando o programa rodar fazer um select * em um banco e deixar tudo dentro de coleções ou

  • Vale mais a pena sempre fazer um select? [/quote]

Um baita depende para você!

Se colocar os dados em listas e não acessar os dados novamente, vc correrá o risco de ficar com os dados desatualizados, porem irá economizar o uso de recursos do banco e da rede e dependedo da quantidade de dados irá obter maior performance.

flws

Nao necessariamente né… Eu posso ao mesmo tempo que fizer um insert/delete/update no banco de dados eu posso manipular os dados que já estão no programa.
Adiciono/atualizo/removo o item da coleção certo?

Eu achei interessante também porque como tem coleções que não aceitam registros duplos, eu achei que seria uma boa ter uma coleção dessa que se o programa não conseguisse adicionar à seleção nem tentaria adicionar ao banco, porque já existe o registro ou algo parecido…

Mas vlws! Se tiverem mais opiniões eu aceito \o/!

[quote=Murl]Nao necessariamente né… Eu posso ao mesmo tempo que fizer um insert/delete/update no banco de dados eu posso manipular os dados que já estão no programa.
Adiciono/atualizo/removo o item da coleção certo? [/quote]

Se o softeware for executado em uma única estação, blz, caso contrario, é nota zero na certa.

Exemplo simples de um contexto onde poderia haver falha:

Um banco de dados e 3 estações com 3 instancias do software sendo executadas, a estação A faz um insert e um update, as estações B e C ficariam desatualizadas.

Isto se encaixa em seu contexto?

flws

É somente uma duvida mesmo…

No caso para programas que eu faço em casa, como um controle dos DVDs que eu tenho, pode ser feito assim porque somente um programa vai rodar né?

Aproveitando… Tem como bloquear uma mesma aplicação de ser executada duas vezes? Por ex: esse meu de controle de dvds, eu posso abrir 2 instancias do programa que trabalharão separadamente… Tem como identificar a instancia e falar pra JVM que só pode existir uma?

Aproveitando o topico =P

Vlws!

Fala mulecadinha! :smiley:

Um pequeno dejavu de outro tópico… O que você quer é um Singleton.

[quote=Murl]- Vale mais a pena quando o programa rodar fazer um select * em um banco e deixar tudo dentro de coleções ou

  • Vale mais a pena sempre fazer um select?[/quote]
    Tanto a aplicação quanto o BD são rapidos, a lerdeza está no I/O que a aplicação faz para acessar a base.

Abraços

Não, ele não quer um singleton
Ele quer a ideia do Singleton, mas que seja aplicado ao SO inteiro, e não somente a uma instância da VM.

Cara, uma ideia de vc implementar essa exclusividade via registro no banco. Qndo alguém inicia uma aplicação, vc vai na base e insere um registro. Dai, qndo vc iniciar a aplicação, é só conferir se o registro está lá ou não. Só não esquece de qndo sair da aplicação deletar o registro.

[quote=clone_zealot]Não, ele não quer um singleton
Ele quer a ideia do Singleton, mas que seja aplicado ao SO inteiro, e não somente a uma instância da VM.[/quote]
Hum… talvez sim, é que eu li esse trecho abaixo e fiquei com a impressão de um singleton…

Na mesma máquina, o normal é ter uma VM só, agora se estamos falando num servidor que recebe requisições de vários clientes, a sua solução concerteza resolve o problema, assim como a sincronização das requisições na aplicação do servidor (se bem implementada).