Alguém sabe a diferença entre os métodos load() e get() do hibernate? E quando usar um ou outro?
Não sou muito bom de inglês então nem vou tentar explicar.
Alguém que manja mais pode explicar aí.
abraços
paulociecomp ,
Traduzindo:
Se load() não consegue localizar o objeto no cache ou banco de dados, uma exceção é lançada. O método load() nunca retorna nulo. O get() retorna nulo se o objeto não pôde ser encontrado.
O método load() pode retornar um proxy em vez de uma instância real persistente. Um proxy é um espaço reservado que dispara a carga do objeto real quando ele é acessado pela primeira vez, discutimos proxies mais tarde nesta seção. Por outro lado, get() não retorna um proxy.
Escolher entre get() e load() é fácil: Se você estiver certo que o objeto persistente existe, e a não-existência seria considerada excepcional, load() é uma boa opção.
Se você não está certo que não é uma instância persistente com o dado identificador (ID), use get() e teste o valor de retorno para ver se ele é nulo.
Usando o load() tem uma outra implicação: A aplicação pode recuperar uma referência válida (proxy) para um instância persistente sem conferir se no banco de dados o estado do objeto. Assim load() não lança uma exceção quando não encontrar o objeto persistente no cache ou banco de dados, a exceção seria lançada mais tarde, quando o proxy é acessada.
Claro, recuperar um objeto pelo seu identificador não é tão flexível quanto utilizar consultas abritárias.
@braços
Vlw pessoal.