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

Como persistir (gravar) um objeto de uma classe usando o método save() da interface Session

Quantidade de visualizações: 9790 vezes
Uma das operações mais comuns em Hibernate é a persistência (gravação) de instâncias transient (temporárias) de classes. Para isso podemos usar o método save() da interface Session. Veja sua assinatura:

----------------------------------------------------------------------
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 
----------------------------------------------------------------------

public Serializable save(Object object) throws HibernateException

Embora o retorno do método save() seja um objeto que implementa a interface Serializable, em geral tal retorno não é usado. Veja um trecho de código no qual gravamos em uma tabela usuarios uma instância de uma classe chamada Usuario:

----------------------------------------------------------------------
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 entidades.Usuario;
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();

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

      // vamos criar uma nova instância da classe Usuario
      // e definir valores para seus atributos
      // note que não precisamos atribuir valores para
      // o atributo id
      Usuario u = new Usuario();
      u.setNome("Osmar J. Silva");
      u.setEmail("osmar@arquivodecodigos.net");
      u.setSenha("1234");

      session.save(u); // vamos salvar o usuário
      session.flush();

      // 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();
    }
  }
}

Ao executarmos este código o Hibernate gravará o usuário na tabela por meio das geração dos seguintes comandos SQL:

----------------------------------------------------------------------
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 
----------------------------------------------------------------------

Hibernate: select max(id) from usuarios
Hibernate: insert into usuarios (nome, email, senha, id) 
  values (?, ?, ?, ?)

Note que o método save() atribui um identificador (id do último registro inserido na base de dados) à instância da classe que está sendo gravada. Se for necessário, o id da instância pode ser obtido da seguinte forma:

----------------------------------------------------------------------
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 
----------------------------------------------------------------------

session.save(u); // vamos salvar o usuário
System.out.println("Gravei um usuário com o id: " + 
  u.getId());


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á 25 usuários muito felizes estudando em nosso site.