A sessão no Hibernate é um cache de primeiro nível, que pode ser entendido como um cache de nível de processo (barra de thread), que existe durante o processo (barra de thread).
A sessão pode ser entendida como um objeto que pode operar o banco de dados e há métodos para operar o banco de dados neste objeto.
Em Java, o cache geralmente se refere ao espaço de memória ocupado pelas propriedades dos objetos Java, geralmente alguns atributos do tipo coleção. Uma série de coleções Java são definidas na classe de implementação sessionImpl da interface da sessão, e essas coleções Java formam o cache da sessão.
Em geral (minha compreensão da sessão): a sessão é o intermediário (um objeto) entre hibernato e banco de dados. Há duas coisas ou funções na sessão.
(1) Métodos para operar o banco de dados
(2) Existem alguns atributos (conjuntos, etc.) na sessão, que usam esses atributos para armazenar o idioma SQL a ser enviado ao banco de dados, cache os dados que foram encontrados no banco de dados, etc.
Cache da sessão
O cache da sessão é composto por uma série de coleções Java. Quando um objeto é adicionado ao cache da sessão, a referência a esse objeto é adicionada à coleção Java. No futuro, mesmo que a variável de referência no aplicativo não se refere mais ao objeto, desde que o cache da sessão não seja limpo, o objeto permanecerá em seu ciclo de vida.
O papel do cache da sessão:
1) Reduza a frequência de acesso ao banco de dados.
2) Verifique se os objetos no cache são mantidos em sincronização com os registros relevantes no banco de dados.
Hora de limpar o cache na sessão:
1) Quando o método de transação commit () é chamado, o método Commit () primeiro limpa o cache (desde que o FlushMode.Commit/Auto) e depois envie transações ao banco de dados.
2) Quando o aplicativo chama find () ou iterate (), se as propriedades do objeto persistente na mudança de cache, o cache será limpo primeiro para garantir que os resultados da consulta possam refletir o status mais recente do objeto persistente.
3) Quando o aplicativo exibe o método Flush () da sessão é chamado.
O ponto no tempo em que o modo de limpeza da sessão executa a operação de cache de limpeza:
Interface da sessão
A interface da sessão é a interface mais importante fornecida pelo Hibernate aos aplicativos para manipular bancos de dados. Ele fornece métodos básicos para economizar, atualizar, excluir e consultar.
1.Save (): Adicione um objeto temporário ao cache, e ele se torna um objeto persistente
-> Selecione o gerador de chave primário especificado no arquivo de mapeamento para atribuir um OID exclusivo ao objeto persistente
-> Planeje uma instrução Inserir para montar o valor da propriedade atual do objeto de parâmetro na instrução Insert, mas o método save () não executa a instrução SQLINSERT imediatamente e será executada apenas quando a sessão limpar o cache.
-> Se as propriedades do objeto persistente forem modificadas após o método SALVE (), a sessão executará instruções adicionais do SQLUPDATE ao limpar o cache.
NOTA: O método salv () é usado para persistir um objeto temporário!
Se você passar em um objeto persistente para o método save (), nenhuma operação será executada, etapas redundantes
Se um objeto de estado gratuito for passado para o método SAVE (), a sessão o processará como um objeto temporário e insira um registro no banco de dados novamente, o que não atende às necessidades de negócios!
2. Update (): re-addia o objeto do cliente para o cache da sessão e transformá-lo em um objeto persistente.
---> Programe uma instrução de atualização, que será executada somente quando o cache for limpo, e os valores do atributo no objeto parâmetro serão montados na instrução Atualizar quando for executada.
Nota: Update () converte um objeto livre em um objeto persistente.
Enquanto o objeto gratuito estiver associado a uma sessão através do método update (), a sessão executará a instrução Atualizar planejada pelo método de atualização ao limpar o cache.
3.SaveorUpdate (): Contém as funções dos métodos salv () e update (). Se o parâmetro passado for um objeto temporário, chame o método de salvamento. Se o parâmetro for um objeto gratuito, ligue para o método update (). Se o parâmetro passado for um objeto persistente, retorne diretamente.
4.load ()/get (): eles carregarão um objeto persistente do banco de dados com base no OID fornecido. A diferença é que, quando não há registro correspondente ao OID no banco de dados, o método load () lançará uma exceção ObjectNotFoundException e o método get () retornará nulo.
5.Delete (): é usado para excluir registros correspondentes a objetos de parâmetro do banco de dados. Se o parâmetro aprovado for um objeto persistente, a sessão planeja executar uma instrução Excluir. Se o parâmetro passado for um objeto livre, primeiro faça o objeto gratuito associado à sessão para torná -lo um objeto persistente e depois planeje uma declaração de exclusão para executar ao limpar o cache.
6.Evict (): Limpe o objeto persistente especificado pelo parâmetro do cache.
Ocasões aplicáveis: você não deseja que a sessão continue a atualizar de síncrona o banco de dados de acordo com o estado do objeto.
No caso de atualização em lote ou exclusão de lote, quando um objeto é atualizado ou excluído, a memória ocupada pelo objeto é liberada no tempo. Obviamente, as operações em lote dão prioridade ao JDBC.
7.clear (): limpe todos os objetos persistentes no cache.
Resumir
O exposto acima é uma rápida compreensão de todo o conteúdo da sessão em Hibernate, e espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!