Hibernate x spring x faces

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…

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();
   }

}
  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…

tenta isto …

[code]<bean id=“myTargetDataSource” class=“org.springframework.jndi.JndiObjectFactoryBean”>
<property name=“jndiName”><value>java:comp/env/jdbc/myds</value></property>
</bean>

<bean id=“myDataSource” class=“org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter”>
<property name=“targetDataSource”><ref bean=“myTargetDataSource”/></property>
<property name=“username”><value>myusername</value></property>
<property name=“password”><value>mypassword</value></property>
</bean>[/code]

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)

  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

[quote=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…
[/quote]

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

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