Performance de update

3 respostas
A

Caros amigos,

Alguém pode afirmar se há alguma perda de perfomance entre dois updates em uma tabela do banco de dados onde o primeiro atualiza apenas uma coluna da tabela e, o segundo, atualiza mais de uma coluna da tabela?
Qual o mais lógico? Eu criar um método atualizarCliente que recebe como parâmetro um objeto Cliente e fazer a atualização de todos as colunas independemente dos atributos que foram atualizados ou criar um método atualizarCliente que recebe uma string com as colunas que serão alteradas?

3 Respostas

danieldestro

Fazendo um método que atualize todas as colunas pode ser bem mais reutilizável que vários métodos.

_fs

Bom, se você usa duas conexões com o banco para fazer isso é claro que fazer tudo de uma vez gasta menos recursos :wink:

smota

O mais normal é ter apenas um método que saiba atualizar todos os campos.

Eu tenho dois caminhos que uso conforme o caso:

  1. O próprio bean tem um mapa dos campos alterados e ao mandar o DAO salvar ele se baseia nessa lista.
    O bean tem 2 métodos adicionais então: um pra recuperar a lista e outro pra limpar a lista. O segundo é necessário pq a lista é populada nos sets mas em muitos casos o bean é preenchido com uma busca e então todos os campos são marcados como alterados.
    Se você nunca for setar campos como null então não precisa da lista porque basta atualizar os campos que não são nulos. Caso contrário você precisa pra diferenciar os campos que são nulos porque você quer atualizar daqueles que são nulos porque nessa transação eles não fazem diferença.
    É um ótimo uso de AOP se você quiser manter os beans burrinhos no código e dinamicamente jogar essas informações (use uma interface) pro DAO usar.

  2. Tenho um objeto mais ou menos como o Criteria do Hibernate só que pra gerar instruções de atualização. Esse caso é quando as atualizações não tem nada a ver com um bean (um desacoplamento primitivo do SQL).

Criado 29 de março de 2004
Ultima resposta 29 de mar. de 2004
Respostas 3
Participantes 4