Você está aqui: Hibernate ::: Classes e Componentes ::: Session |
Entenda a interface Session do HibernateQuantidade 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 |
Software 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 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 |