Hibernate - diferença entra getCurrentSession() e openSession()

4 respostas
R

qual a diferença entre os métodos getCurrentSession() e openSession()? e quando utilizar um em relação ao outro?

abraços

4 Respostas

R

.

R

O openSession abre sempre uma nova conexão cada vez que vc o chama…

já o currentSession verifica se tem alguma session no contexto que vc indicou no config, se não existir, ele cria uma pra vc…

dae depende pra q vc vai querer usá-lo…

aconselho a dar uma lida aqui

https://www.hibernate.org/42.html

K

Man, eu estou com uma dúvida parecida. Eu estou me exercitando em uma aplicacao de login, onde o usuario loga num sistema e dependendo do seu nível, ele tem acessos diferentes. Até aqui, tudo bem. A aplicacao acessa um usuario no banco e o loga no sistema apenas se esse usuario existir.

Como eu estou trabalhando em cima de um exercício do curso fj26 da caelum, eu fui aprimorando e modificando algumas coisas. Dentro disso, eu criei uma classe chamada HibernateSessionFilter para criar a session para o banco.

Depois, quando eu já pensava na questao de seguranca de acesso via url, para aquelas pessoas que fossem pular a tela de login, eu criei uma classe chamada ValidaAcessoFilter para verificar se existe um usuario logado ou nao…

O problema é que em cada classe que eu uso o banco de dados, eu dou um comando como o do exemplo abaixo:

public List<Fornecedor> getFornecedores() { System.out.println("lendo fornecedores ..."); Session session = HibernateUtil.openSession(); Dao<Fornecedor> dao = new Dao<Fornecedor>(session, Fornecedor.class); return dao.list(); }

Ou seja: toda vez eu crio uma session nova. Nao tem como eu usar a session criada lá no login do usuario?? Isso nao facilita na questao de segurança para que nao se possa acessar a pagina pelas urls???

B

Kleber-rr:
Man, eu estou com uma dúvida parecida. Eu estou me exercitando em uma aplicacao de login, onde o usuario loga num sistema e dependendo do seu nível, ele tem acessos diferentes. Até aqui, tudo bem. A aplicacao acessa um usuario no banco e o loga no sistema apenas se esse usuario existir.

Como eu estou trabalhando em cima de um exercício do curso fj26 da caelum, eu fui aprimorando e modificando algumas coisas. Dentro disso, eu criei uma classe chamada HibernateSessionFilter para criar a session para o banco.

Depois, quando eu já pensava na questao de seguranca de acesso via url, para aquelas pessoas que fossem pular a tela de login, eu criei uma classe chamada ValidaAcessoFilter para verificar se existe um usuario logado ou nao…

O problema é que em cada classe que eu uso o banco de dados, eu dou um comando como o do exemplo abaixo:

public List<Fornecedor> getFornecedores() { System.out.println("lendo fornecedores ..."); Session session = HibernateUtil.openSession(); Dao<Fornecedor> dao = new Dao<Fornecedor>(session, Fornecedor.class); return dao.list(); }

Ou seja: toda vez eu crio uma session nova. Nao tem como eu usar a session criada lá no login do usuario?? Isso nao facilita na questao de segurança para que nao se possa acessar a pagina pelas urls???

Uma das saídas que conheço é passar uma sessão via Construtor na classe DAO.
De onde ela vem? R: da HibernateUtil, em vez de retornar (no get()) uma sessionFactory, retorna uma sessionFactory.openSession();

Corrijam-me se estiver errado…

Criado 17 de julho de 2007
Ultima resposta 16 de dez. de 2009
Respostas 4
Participantes 4