Gostaria de saber qual a melhor maneira do Spring se conectar em mais de um banco?
Pensei no seguinte: Eu passaria a factory que quero trabalhar (seria uma factory para cada banco de dados)
createHibernateTemplate(HibernateUtil.getSessionFactory(“passoumaid”)).delete(teste);
Posso encontrar problemas nessa abordagem?
Já tentou definir 2 datasources? Algo assim:
<bean id="dataSource1" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${jndiDataSource1}" />
</bean>
<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${jndiDataSource2}" />
</bean>
Pensei sim, mas havia uma dúvida: como no DAO eu saberia qual dataSource usar para realizar determinada ação no HibernateTemplate? (não vi nenhum construtor que aceita um dataSource como parâmetro)
Seus DAOs estendem de HibernateDaoSupport?
Nele há um
Teoricamente, vc pode criar 2 sessionFactory (1 para cada dataSource) e para cada DAO criado, vc precisará setar o sessionFactory adequado.
mmm então não difere muito da maneira que eu havia pensado.
Porque como trabalho com remote objects do Flex não posso passar alguma identifação que eu consiga configurar a session factory no construtor :S então tenho que passar essa identificação em todos os métodos… acho preferível fazer de maneira estática como comentei no primeiro post.
E as session factories, crio baseado no cfg.xml e não em data sources. O resto fica na mesma
Obrigado pelas respostas, só fiquei receoso desse método me trazer complicações futuras.
Use Spring security, assim você não precisa passar o id de qual banco usar em todo método que você chama.