A principal diferença é se está atrasado para carregar.
O método de carga não acessa o banco de dados imediatamente e, quando o registro tentou carregar, o método de carga retorna um objeto proxy não inicializado.
Obter método
Sempre acesse o banco de dados imediatamente. Quando o registro tentou carregar não existir, retorne nulo diretamente
Existem dois métodos encontrados no hibernato que são muito semelhantes. Depois de revisá -lo, encontrei
Existem dois métodos muito semelhantes no hibernato, get () e carregamento (). Ambos podem ler dados do banco de dados através da classe de entidade especificada e ID e retornar a instância correspondente. No entanto, o Hibernate não fará dois exatamente os mesmos métodos. A diferença entre eles é:
Get é consultar o banco de dados diretamente. Se não puder ser encontrado, retornará nulo. A carga será carregada primeiro na memória. Se não foi carregado ou consultado antes, consulte o banco de dados.
A diferença fundamental entre o método GET e o método de carga no hibernato é que, se você usar o método de carga, o Hibernate acredita que o objeto (registro do banco de dados) correspondente ao ID deve existir no banco de dados, para que possa ser usado com confiança e pode usar o proxy para atrasar o carregamento do objeto. O banco de dados é consultado apenas quando outros dados de atributo no objeto são usados, mas se o registro não existir no banco de dados, não há como apenas lançar exceções. O método de carga lança exceções significa que, ao usar os dados do objeto, as exceções são lançadas quando os dados não existem no banco de dados, e não ao criar esse objeto. Como o cache na sessão é um recurso muito barato para o Hibernate, ao carregar, primeiro verificaremos o cache da sessão para ver se existe o objeto correspondente ao ID. Se não existir, um proxy será criado. Portanto, se você souber que o ID deve ter um registro correspondente no banco de dados, pode usar o método de carga para obter carregamento preguiçoso. Para o método GET, o Hibernate confirmará se os dados correspondentes ao ID existem. Primeiro, procure no cache da sessão e depois procure no cache secundário. Se ainda não foi feito, procure o banco de dados e, se não tiver sido feito no banco de dados, retorne nulo.
2. O método Get primeiro consulta o cache da sessão, se não, consulta o cache secundário e, finalmente, consulta o banco de dados; Pelo contrário, quando o método de carga é criado, o cache da sessão é a primeira consulta e, se não houver nenhum agente, o cache e o banco de dados secundários são consultados apenas quando os dados são realmente usados.
Em suma, para a diferença fundamental entre get e carga, em uma palavra, o Hibernate acredita que os dados devem existir no banco de dados para o método de carga e pode usar o proxy para atrasar o carregamento com confiança. Se um problema for encontrado durante o uso, ele só poderá lançar exceções; Para o método GET, o Hibernate deve obter os dados reais, caso contrário, ele retornará nulo.
1. Se nenhum registro que atenda aos critérios for encontrado, o método get () retornará nulo. E load () reportará um objectNotFoundCeception.
2. O método load () pode retornar a instância da classe de proxy de uma entidade, enquanto get () sempre retornará apenas a classe de entidade.
3. O método Load () pode fazer pleno uso dos dados existentes no cache secundário e no cache interno, enquanto o método get () pesquisa apenas no cache interno. Se nenhum dados correspondente for encontrado, o cache secundário será ignorado e o SQL será chamado diretamente para concluir a pesquisa.