Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

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

Entenda a interface Session do Hibernate

Quantidade de visualizações: 8807 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 para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

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

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
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á 46 usuários muito felizes estudando em nosso site.