Você está aqui: Hibernate ::: Classes e Componentes ::: Session

Entenda a interface Session do Hibernate

Quantidade de visualizações: 8777 vezes
A interface Session é a principal interface de tempo de execução entre uma aplicação Java e o Hibernate. Esta é a classe de API central que abstrai a noção de um serviço de persistência.

O ciclo de vida de uma Session é delimitado pelo início e fim de uma transação lógica. (Transações longas podem agrupar várias transações no banco de dados).

A principal função de uma Session é oferecer operações de inserção (create), listagens (read), exclusão (delete) e atualização (update) para instâncias de classes de entidades mapeadas. Tais instâncias podem existir em um de três estados possíveis:

Transient - O objeto nunca é persistido, ou seja, não está associado a nenhuma Session.

Persistent - O objeto está associado a um Session única.

Detached - Previamente persistido. Não está mais associado a nenhuma Session.

Instâncias transient (passageiras) podem ser transformadas em persistentes por meio de chamadas aos métodos save(), persist() ou saveOrUpdate() da interface Session. Instâncias persistentes podem se tornar transient (passageiras) por meio de chamadas ao método delete(). Qualquer instância retornada pelos métodos get() ou load() é uma instância persistente. Instâncias desconectadas (detached) podem ser transformadas em persistente novamente por meio de chamadas aos métodos update(), saveOrUpdate(), lock() ou replicate(). O estado de uma instância transient (passageiras) ou desconectada (detached) pode ser alterado para persistente novamente por meio de uma chamada ao método merge().

Chamadas aos métodos save() e persist() resultam em um comando SQL INSERT. Uma chamada ao método delete() resulta em um comando SQL DELETE. Chamadas aos métodos update() ou merge() resultam em um comando SQL UPDATE. Alterações em instâncias persistentes são detectadas em tempo de descarga (flush) e também resultam em um comando SQL UPDATE. Chamadas aos métodos saveOrUpdate() ou replicate() resultam em comandos SQL INSERT ou UPDATE.

A especificação da interface Session não exige que suas implementações ofereçam segurança de thread (threadsafe). Em vez disso, cada thread/transação deve obter sua própria instância a partir de uma SessionFactory.

Uma instância de Session é serializável (serializable) se suas classes persistentes também o forem.

Veja um trecho de código no qual mostro a forma mais comum de se obter uma Session e iniciar uma transação:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos_hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Main {
  public static void main(String[] args) {
    Session session = null;
    Transaction tx = null;

    try {
      // aqui nós lemos as configurações do arquivo hibernate.cfg.xml
      // e deixamos o Hibernate pronto para trabalhar
      SessionFactory factory = new
        Configuration().configure().buildSessionFactory();

      // abre uma nova sessão
      session = factory.openSession();

      // a sessão foi aberta com sucesso?
      if(session.isOpen()){
        System.out.println("O Hibernate está pronto para trabalhar.");
      }

      // inicia uma transação
      tx = session.beginTransaction();

      // realiza algum trabalho aqui

      // e salva as alterações no banco de dados
      tx.commit();
    }
    catch(Exception e) {
      // houve algum problema? vamos retornar o banco de dados
      // ao seu estado anterior
      if(tx != null)
        tx.rollback();
      System.out.println(e.getMessage());
    }
    finally {
      session.close();
    }
  }
}

Se a Session lançar uma exceção, o transação deve sofrer um roll back (desfazer) e a sessão deve ser descartada. O estado interno de uma Session pode não ser consistente com o banco de dados depois que uma exceção ocorre.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Hibernate

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 19 usuários muito felizes estudando em nosso site.