Você está aqui: Hibernate ::: Classes e Componentes ::: Session |
Entenda a interface Session do HibernateQuantidade 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. |
![]() |
Veja mais Dicas e truques de Hibernate |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |