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