Flex + Hibernate com vários Bancos

Boa Tarde!!!

Estou precisando criar uma aplicação onde a mesma terá dois bancos de dados, isso dependendo do Cliente logado, isso é possível?
Estou utilizando Flash Builder 4 + Java + Hibernate + Firebierd, caso conheçam, algum material, tutorial exemplo ou qualquer feedback que me auxilie ficarei grato.

Att
Bruno Sanches

Vc vai usar JPA?
Se sim, basta criar duas persistence units, uma amarrada a cada banco.

[]'s

Opa, valeu, vou dar uma pesquisada, pois, estou começando tanto em flex quanto java, eu programo mais em PHP, comecei esse projeto aos trancos e barrancos para aumentar meus conhecimentos.

O que estou fazendo é o seguinte:

minha entity

package br.com.ehweb.business.entitys;

public class Cursos {
	
	private int curCodigo;
	private String curDescricao;
	private String curTipoEnsino;
	private String curHabilitacao;
	private String curLeiReconhecimento;
	
	public Cursos() {}

	gets e sets .....	
}

minha Interface

package br.com.ehweb.business.repositorys;

import java.util.List;

import br.com.ehweb.business.entitys.Cursos;

public interface ICursos {
	public void insertEdit(Cursos cursos) throws Exception;  
	public List<Cursos> getList() throws Exception; 
	public void del(Cursos cursos) throws Exception;
}

meu DAO

package br.com.ehweb.data.daos;

import java.util.List;

import org.hibernate.classic.Session;

import HibernateUtil.HibernateUtil;
import br.com.ehweb.business.entitys.Cursos;
import br.com.ehweb.business.repositorys.ICursos;

public class CursosDAO implements ICursos {
	
	private final Session sessao = HibernateUtil.getSessao("hibernate.cfg.xml");

	@Override
	public void insertEdit(Cursos cursos) throws Exception {
		sessao.saveOrUpdate(cursos);
		sessao.flush();
		sessao.close();
	}

	@Override
	public void del(Cursos cursos) throws Exception {
		sessao.delete(cursos);
		sessao.flush();
		sessao.close();
		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Cursos> getList() throws Exception {
		List<Cursos> lista = sessao.createQuery("FROM cursos").list();
		sessao.flush();
		sessao.close();
		return lista;
	}
}

HibernateUtil

package HibernateUtil;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import javax.swing.JOptionPane;

public class HibernateUtil
{
    private static SessionFactory FabricaSessoes;
   
    

    public static org.hibernate.classic.Session getSessao(String conectar)
    {  
        try
        {
            FabricaSessoes = new Configuration().configure(conectar).buildSessionFactory();   
        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, "Erro na fabrica de sessoes = "+erro);
            FabricaSessoes = null;
        }   
    	
    	FabricaSessoes.close();
    	return (org.hibernate.classic.Session) FabricaSessoes.openSession();
    }	
 }

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration> 
	<session-factory> 
		<property name="hibernate.connection.driver_class"> 
			com.mysql.jdbc.Driver 
		</property> 
		<property name="hibernate.connection.url"> 
			jdbc:mysql://localhost/CrudJavaFlexHibernate
		</property> 
		<property name="hibernate.connection.username"> 
			User 
		</property> 
		<property name="hibernate.connection.password"> 
			XXXXXX 
		</property> 
		<property name="hibernate.connection.dialect"> 
			org.hibernate.dialect.MySQLInnoDBDialect 
		</property>
		<property name="show_sql">true</property> 

		<mapping resource="br/com/ehweb/business/repositorys/hbm/Cursos.hbm.xml" />
	</session-factory>  
</hibernate-configuration>

E o mapeamento do Curso

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping>
	<class name="br.com.ehweb.business.entitys.Cursos" table="cursos">
		<id name="curCodigo" column="CUR_CODIGO" type="int" />
		<property name="curDescricao" column="CUR_DESCRICAO" />
		<property name="curTipoEnsino" column="CUR_TIPO_ENSINO" />
		<property name="curHabilitacao" column="CUR_HABILITACAO" />
		<property name="curLeiReconhecimento" column="CUR_LEI_RECONHECIMENTO" />
	</class>	
</hibernate-mapping>

E para finalizar o remoting-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" 
    class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>
    
    <destination id="Cursos">
        <properties>
            <source>br.com.ehweb.data.daos.CursosDAO</source>                    
        </properties>
    </destination>
    
    <destination id="CursosPadrao">
        <properties>
            <source>br.com.ehweb.data.daos.PadraoDAO</source>                    
        </properties>
    </destination>
</service>

Só para constar testei o insertEdit e está funcionando perfeitamente, só que agora preciso adaptar para que dependendo do Cliente conectado acesse um determinado Banco.
Esta aplicação também vai ter dois banco por Cliente.

Seria mais ou menos isso?

[quote=davidbuzatto]Vc vai usar JPA?
Se sim, basta criar duas persistence units, uma amarrada a cada banco.

[]'s[/quote]

Se criar duas persistence units serão criadas duas session factories? Ou apenas uma?

Rafael, estou apanhando um pouco aki ainda mais parece que está indo.

Tive de criar duas, criei um para banco 1 e outra para banco 2.

Att
Bruno Sanches