javasf@googlegroups.com
[Top] [All Lists]

Re: [javasf] HibernateDaoSupport - Spring + JSF 2.0

Subject: Re: [javasf] HibernateDaoSupport - Spring + JSF 2.0
From: Frederico Mucceli
Date: Thu, 14 Apr 2011 15:28:33 -0300
@BrunoMaomeh Depois do seu post clareou minha mente aqui. Acho que meu problema pode ser uma confusão de contextos aqui. Estou usando a annotation @ManagedBean, acho então que p/ meu MVC funcionar redondo aqui preciso usar a annotation @Controller. Seria isso?

@Guilherme Obrigado pela dica. Já substitui pela anotação @Component, mas tive uma dúvida : Substituindo pelo @Component como irei setar qual sessionFactory aquele bean-spring vai usar? Pergunto porque uso duas sessionFactory's diferentes.

P/ conseguir injetar dependencias eu uso o @Autowired certo? P/ o mesmo funcionar preciso adicionar essa linha ao application-context.xml :

 <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

Certo? Ignorem a falta do MVC, só irei ilustrar/resumir o problema :

@ManagedBean ou @Controller ?
@Component
public class LoginBean extends BaseBean {

     @Autowired
      LoginDAO loginDAO;

      public void login(){
         loginDAO.login();
      }
}

O código acima me dá o loginDAO como null, mesmo o LoginDAO tendo a annotation @Component.

Em 14 de abril de 2011 14:43, Guilherme <guilhermefinotti@xxxxxxxxx> escreveu:
Frederico, tenho um exemplo que pode te ajudar.
No final do post tem um link pra download do projeto (Eclipse).
http://javafaces.wordpress.com/2010/12/20/utilizando-spring-annotations/

Dica:
Já que está usando annotations, retire a declaração do loginDAO do arquivo xml e anote a classe com @Repository ou @Component.






Em 14 de abril de 2011 14:32, Frederico Mucceli <mucceli@xxxxxxxxx> escreveu:

Rafael,

Obrigado pela ajuda.
Eu já havia tentado.Eu agora que vi que não coloquei o @Autowired no código. Eu já usei esse @Autowired e sempre o getHibernateTemplate(), me retorna null.

Acredito que configurei alguma coisa incorreta, mas lendo e relendo vários blogs e tutoriais não o vi ainda. =/

Em 14 de abril de 2011 14:22, Rafael Sousa <rafaelps2001@xxxxxxxxx> escreveu:


no BaseDAO eu colocaria o metodo:

    @Autowired
    public void init(SessionFactory sessionFactory) {
        setSessionFactory(sessionFactory);
    }


desta forma o spring injetaria o session


boa sorte !


Em 14 de abril de 2011 14:17, Frederico Mucceli <mucceli@xxxxxxxxx> escreveu:
Boa tarde Srs,

Estou com uma dúvida que acredito ser simples, mas lendo as documentações e vários tutoriais espalhados pela web não achei pontual p/ meu problema. Vi que aqui mesmo no grupo um colega teve um problema parecido no começo do ano e alguns de vocês gentilmente disponibilizaram projetos e códigos p/ a resolução do problema. Comparei também com esses projetos e não consegui ver o meu problema.

Estou passando p/ o Spring o controle da sessionFactory e de session do hibernate. O problema é a minha session/sessionFactory fica sempre nula. Parece que alguma configuração que fiz não está batendo. O erro é em tempo de execução. Alguém já passou por isso?

Já tentei também usar o getSession() e o HibernateTemplate e o problema é o mesmo. Um link com algo que possa clarear já me ajuda. Agradeço desde já e deixei abaixo meu código do application-context.xml e meu Dao.

LoginDao
public class LoginDAO extends BaseDao{
   
    public Usuario salvarUsuario(Usuario user){
         saveOrUpdate(user);
  }

BaseDao
public class BaseDao extends HibernateDaoSupport implements AbstractBaseDao{
  
    public BaseDao(SessionFactory sessionFactory) {
        setSessionFactory(sessionFactory);
    }

    public void saveOrUpdate(Object obj) {
        getHibernateTemplate().saveOrUpdate(obj);
    }
}

Config do application-context.xml
             
       <!-- HIBERNATE -->
        <!-- Data Source -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
            <property name="url" value="jdbc:oracle:thin:@172.30.8.24:1521:homolog1" />
            <property name="username" value="usu_secmultas" />
            <property name="password" value="usu_secmultas123" />
        </bean>
       
        <!-- Session Factory -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocations"> 
                <list> 
                    <value>classpath:/hibernate.cfg.xml</value> 
                </list> 
            </property> 
        </bean>
       
        <!-- Transaction Manager - Gerenciador de transações -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory">
                <ref local="sessionFactory"/>
            </property>
        </bean>
                    
        <!-- Bean contendo o DAO do login -->
        <bean id="loginDAO" class="br.gov.mg.tce.secmultas.dao.LoginDAO">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
   
    <!-- FIM DA CONFIGURAÇÃO DO HIBERNATE -->
   
    <!-- Habilita a configuração de beans via anotações sem a necessidade de usar classes do spring -->
    <context:annotation-config/>
        
</beans>

--
"Na vida não importa a largada e nem a chegada, e sim a caminhada"(Guimarães Rosa)

Linux is ready, but are the people?
Linux user number #521610
                    
Frederico Mucceli
http://twitter.com/mucceli

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
"Na vida não importa a largada e nem a chegada, e sim a caminhada"(Guimarães Rosa)

Linux is ready, but are the people?
Linux user number #521610
                    
Frederico Mucceli
http://twitter.com/mucceli

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
"Na vida não importa a largada e nem a chegada, e sim a caminhada"(Guimarães Rosa)

Linux is ready, but are the people?
Linux user number #521610
                    
Frederico Mucceli
http://twitter.com/mucceli

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
<Prev in Thread] Current Thread [Next in Thread>