Hibernate - Sessões

Uma sessão é usada para obter uma conexão física com um banco de dados. O objeto Session é leve e projetado para ser instanciado toda vez que uma interação for necessária com o banco de dados. Objetos persistentes são salvos e recuperados por meio de um objeto de Sessão.

Os objetos de sessão não devem ser mantidos abertos por muito tempo porque eles geralmente não são seguros para thread e devem ser criados e destruídos conforme necessário. A principal função da Sessão é oferecer, criar, ler e excluir operações para instâncias de classes de entidade mapeadas.

As instâncias podem existir em um dos três estados a seguir em um determinado momento -

  • transient - Uma nova instância de uma classe persistente, que não está associada a uma Session e não tem representação no banco de dados e nenhum valor de identificador é considerada transitória pelo Hibernate.

  • persistent- Você pode tornar uma instância transitória persistente, associando-a a uma Sessão. Uma instância persistente possui uma representação no banco de dados, um valor identificador e está associada a uma Sessão.

  • detached - Assim que fecharmos a Sessão do Hibernate, a instância persistente se tornará uma instância separada.

Uma instância de Session é serializável se suas classes persistentes são serializáveis. Uma transação típica deve usar o seguinte idioma -

Session session = factory.openSession();
Transaction tx = null;

try {
   tx = session.beginTransaction();
   // do some work
   ...
   tx.commit();
}

catch (Exception e) {
   if (tx!=null) tx.rollback();
   e.printStackTrace(); 
} finally {
   session.close();
}

Se a Sessão lançar uma exceção, a transação deve ser revertida e a sessão deve ser descartada.

Métodos de interface de sessão

Existem vários métodos fornecidos pelo Sessioninterface, mas vou listar alguns métodos importantes, que usaremos neste tutorial. Você pode verificar a documentação do Hibernate para uma lista completa de métodos associados comSession e SessionFactory.

Sr. Não. Métodos e descrição da sessão
1

Transaction beginTransaction()

Comece uma unidade de trabalho e retorne o objeto de transação associado.

2

void cancelQuery()

Cancele a execução da consulta atual.

3

void clear()

Limpe completamente a sessão.

4

Connection close()

Encerre a sessão liberando a conexão JDBC e limpando.

5

Criteria createCriteria(Class persistentClass)

Crie uma nova instância de Criteria, para a classe de entidade fornecida, ou uma superclasse de uma classe de entidade.

6

Criteria createCriteria(String entityName)

Crie uma nova instância de Criteria, para o nome de entidade fornecido.

7

Serializable getIdentifier(Object object)

Retorne o valor do identificador da entidade fornecida como associado a esta sessão.

8

Query createFilter(Object collection, String queryString)

Crie uma nova instância de Query para a coleção e string de filtro fornecidas.

9

Query createQuery(String queryString)

Crie uma nova instância de Query para a string de consulta HQL fornecida.

10

SQLQuery createSQLQuery(String queryString)

Crie uma nova instância de SQLQuery para a string de consulta SQL fornecida.

11

void delete(Object object)

Remova uma instância persistente do armazenamento de dados.

12

void delete(String entityName, Object object)

Remova uma instância persistente do armazenamento de dados.

13

Session get(String entityName, Serializable id)

Retorne a instância persistente da entidade nomeada fornecida com o identificador fornecido, ou null se não houver tal instância persistente.

14

SessionFactory getSessionFactory()

Obtenha a fábrica de sessão que criou esta sessão.

15

void refresh(Object object)

Releia o estado da instância fornecida do banco de dados subjacente.

16

Transaction getTransaction()

Obtenha a instância Transaction associada a esta sessão.

17

boolean isConnected()

Verifique se a sessão está conectada no momento.

18

boolean isDirty()

Esta sessão contém alguma alteração que deve ser sincronizada com o banco de dados?

19

boolean isOpen()

Verifique se a sessão ainda está aberta.

20

Serializable save(Object object)

Persista a instância transitória fornecida, primeiro atribuindo um identificador gerado.

21

void saveOrUpdate(Object object)

Salve (Objeto) ou atualize (Objeto) a instância fornecida.

22

void update(Object object)

Atualize a instância persistente com o identificador da instância separada fornecida.

23

void update(String entityName, Object object)

Atualize a instância persistente com o identificador da instância separada fornecida.