Hibernate x spring x faces

7 respostas
J

Pessoal, estou com um problema e acho que é primário, preciso da ajuda de vocês.

Estou utilizando Hibernate, Spring e Javaserver faces…

  1. Tenho uma tela de conexão com o banco de dados onde o cliente entra com o nome do usuário, a senha e clica no botão enviar.

minha classe de Login.java

..... methodo para logar
public boolean logar(){

    Properties p = new Properties();
    p.setProperty( "hibernate.connection.username", getUsuario() );
    p.setProperty( "hibernate.connection.password", getSenha() );
 
    Configuration conf = new Configuration().setProperties( p );

    /* Como eu faço para obter o bean de id="sessionFactory" que se encontra no arquivo applicationContext.xml,
     *para que eu possa alterar a configuração de usuário e senha ?
     * Cada usuário terá sua própria senha e id. O bean sessionFactory tem escopo de sessão ou de aplicação? Porque se for de aplicação,  
    */ como eu resolvo esse problema? alguém pode me Ajudar?
    //SessionFactory factory = conf.configure().buildSessionFactory();
}

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
.....
  1. Qual o escopo dos beans do Spring dentro do arquivo applicationContext.xml e é possível alterar o seu escopo?

Obrigado…

7 Respostas

keller

Tentou fazer assim:

package br.com.guj.gui.legal;

import org.springframework.orm.hibernate3.LocalSessionFactoryBean;

public classe NomeLegal{

   private LocalSessionFactoryBean sessionFactory; //get e set dele
   
   public void vouUsarSessionFactory(){
     this.sessionFactory.getAlgumaPropriedade();
   }

}
J
  1. Qual o escopo do bean abaixo sendo que o mesmo se encontra em applicationContext.xml?
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
		<property name="mappingResources">
			<list>
				<value>/orm/Usuario.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
			</props>
		</property>
	</bean>
  1. Se eu alterar o usuario e a senha de conexão utilizando o sessionFactory, esta alteração será para toda aplicação, sessão ou requisição ? A forma abaixo está correta ou existe uma outra alternativa ?
Properties p = new Properties();
     p.setProperty( "hibernate.connection.username", "jukinha");
     p.setProperty( "hibernate.connection.password", "password" );
  
     Configuration conf = new Configuration().setProperties( p );

      factory = conf.configure().buildSessionFactory();

Não sei se consegui expressar o meu problema corretamente…

Obrigado gui…

urubatan

tenta isto ...

&lt;bean id="myTargetDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"&gt;
   &lt;property name="jndiName"&gt;&lt;value&gt;java:comp/env/jdbc/myds&lt;/value&gt;&lt;/property&gt;
 &lt;/bean&gt;

 &lt;bean id="myDataSource" class="org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter"&gt;
   &lt;property name="targetDataSource"&gt;&lt;ref bean="myTargetDataSource"/&gt;&lt;/property&gt;
   &lt;property name="username"&gt;&lt;value&gt;myusername&lt;/value&gt;&lt;/property&gt;
   &lt;property name="password"&gt;&lt;value&gt;mypassword&lt;/value&gt;&lt;/property&gt;
 &lt;/bean&gt;
urubatan

ahh, esqueci …
com o http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/jdbc/datasource/UserCredentialsDataSourceAdapter.html

tu configura um login default pro datasource …
e logo quando o teu usuário logar tu pode usar o metodo:
http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/jdbc/datasource/UserCredentialsDataSourceAdapter.html#setCredentialsForCurrentThread(java.lang.String,%20java.lang.String)

J
  1. Valeu Urubatan, eu só não entendi como eu configuro a propriedade jndiName. Você poderia me elucidar ?

java:comp/env/jdbc/myds ??

java:comp/env/jdbc/myds
keller

jukinha:
1) Qual o escopo do bean abaixo sendo que o mesmo se encontra em applicationContext.xml?

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
		<property name="mappingResources">
			<list>
				<value>/orm/Usuario.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
			</props>
		</property>
	</bean>

Obrigado gui…

Como assim escopo? Page / Request / Session / Application ?

keller

Disso que o Urubatan esta falando eu realmente desconheco,
vou procurar me informar quem sabe estou deixando
alguma feature do Spring pra tras no projeto… :wink:

[]s

Criado 25 de agosto de 2006
Ultima resposta 25 de ago. de 2006
Respostas 7
Participantes 3