Hibernate x Spring  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
jukinha
Thread.start()

Membro desde: 31/07/2006 14:17:11
Mensagens: 46
Offline

Olá amigos,

1) Preciso fazer a integração entre o Hibernate e o Spring, porém, estou com um problema na hora de fazer a conexão com o banco de dados.

2) Minha aplicação vai ter uma tela de Login onde cada usuário terá um id e senha para acessar o sistema.

3) O hibernate tem a SessionFactory que compartilha uma conexão (com um usuário e senha) para toda a aplicação. Como eu faço para utilizar uma SessionFactory por Usuario (HttpSession) utilizando o String e Hibernate?



4) Preciso fazer com que a minha SessionFactory se torne única por sessão, ou seja, uma SessionFactory por Usuário.

5) Como eu faço para setar o usuário e senha e registrar a minha sessionFactory como sendo única por sessão?

5) Eu fiz várias buscas na google e não encontrei nada neste sentido. Como eu sei que a comunidade do GUJ é forte, e tem como prática o auxílio aos menos experiêntes, me senti a vontade para colocar minha dúvida e problema, e sei que poderá ser a dúvida de muitos outros.

6) Alguém poderia fornecer um exemplo elucidativo.

Agradeço desde já...

Jukinha
Kenobi
GUJ Master
[Avatar]

Membro desde: 14/11/2003 13:06:37
Mensagens: 1678
Localização: Brasil
Offline

jukinha wrote:Olá amigos,

1) Preciso fazer a integração entre o Hibernate e o Spring, porém, estou com um problema na hora de fazer a conexão com o banco de dados.

2) Minha aplicação vai ter uma tela de Login onde cada usuário terá um id e senha para acessar o sistema.

3) O hibernate tem a SessionFactory que compartilha uma conexão (com um usuário e senha) para toda a aplicação. Como eu faço para utilizar uma SessionFactory por Usuario (HttpSession) utilizando o String e Hibernate?



4) Preciso fazer com que a minha SessionFactory se torne única por sessão, ou seja, uma SessionFactory por Usuário.

5) Como eu faço para setar o usuário e senha e registrar a minha sessionFactory como sendo única por sessão?

5) Eu fiz várias buscas na google e não encontrei nada neste sentido. Como eu sei que a comunidade do GUJ é forte, e tem como prática o auxílio aos menos experiêntes, me senti a vontade para colocar minha dúvida e problema, e sei que poderá ser a dúvida de muitos outros.

6) Alguém poderia fornecer um exemplo elucidativo.

Agradeço desde já...

Jukinha


Bom vamos lá:

1-) Para sua integração do Hibernate + Spring, sugiro que crie um Context separado somente par esse tipo de configuração.

No seu web.xml acrescente:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-hibernate.xml
</param-value>
</context-param>


Com isso sua configuração vai estar disponível no carregamento da aplicação. Caso ainda tenha problemas nessa parte, me envie uma msg pvt com seu e-mail, q te mando um arquivo de configuração de exemplo.

3-) Existe um filtro que se chama OpenSessionInViewFilter ele faz o que você precisa. Eu tive alguns problemas e acabei criando um mudando o FlushMode para Auto.

Classe do filtro:


package br.com.cardif.spring.utils;

import org.hibernate.FlushMode;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.orm.hibernate3.SessionFactoryUtils;
import org.springframework.orm.hibernate3.support.OpenSessionInViewFilter;

/**
*
* @author Felipe A. Oliveira
*/

public class AutoFlushOpenSessionInViewFilter extends OpenSessionInViewFilter{

/**
* Busca uma Session do Hibernate e aplica flush mode para auto.
* @param sessionFactory a SessionFactory
* @return the Session para utilizar
* @throws DataAccessResourceFailureException se sessão não for criada
* @see org.springframework.orm.hibernate3.SessionFactoryUtils#getSession(SessionFactory, boolean)
* @see org.hibernate.FlushMode#AUTO
*/
protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
session.setFlushMode(FlushMode.AUTO);
return session;
}

}//the end




Configuração no web.xml:



<filter>
<filter-name>AutoFlushOpenSessionInViewFilter</filter-name>
<filter-class>br.com.cardif.spring.utils.AutoFlushOpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>AutoFlushOpenSessionInViewFilter</filter-name>
<servlet-name>springapp</servlet-name>
</filter-mapping>




Onde springapp é o nome do meu Dispatcher.

----------------------------------------------------------
SOA|EXPERT - http://www.soaexpert.com.br
SOA de um jeito simples e eficiente.
[WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team