segunda-feira, 21 de junho de 2010

Porque evitar o saveOrUpdate do Hibernate?

Para o Hibernate saber se o saveOrUpdate deve fazer um insert ou um update, ele faz um select na tabela e verifica se o registro já existe, caso exista ele faz um update do contrário um insert. Com isso temos uma ida adicional ao banco de dados.

Para evitar o select adicional você pode utilizar um mapeamento <Version> ou <TimeStamp> e uma propriedade na entidade. O Hibernate gerencia os valores internamente para controle de concorrência otimista, um dos efeitos desse gerenciamento é que um valor de data e hora vazia ou uma versão 0 ou null, indica que é uma instância nova e a mesma será automaticamente inserida, sem que um select seja efetuado.

Ou utilize os métodos save e update separadamente.

Nenhum comentário:

Postar um comentário