Você vai ter de trabalhar com dois objetos SessionFactory distintintos: um para cada banco. Infelizmente o Hibernate não trabalha com dois bancos de dados distintos como se fossem um só (o que inicialmente seria até bacana).
Se quiser criar relacionamentos entre entidades que são armazenadas em bancos distintos, vai ter de lançar mãos de alguns artifícios, como por exemplo criar getters e setters que sirvam apenas para fazer a conexão entre os dois bancos.
Exemplo: suponhamos que você tenha dois bancos. No banco A, armazena seus clientes. No banco B, armazena as compras dos seus clientes (eta exemplo ruim hein?).
Você teria um bean chamado Cliente com o seguinte código:
class Cliente {
String id;
String nome;
// getters e setters para cada propriedade, além do construtor padrão
}
E também teria a classe Compra com a seguinte estrutura:
class Compra {
String id;
Date data;
Cliente cliente;
/*
Getters e setters para os três campos acima
*/
// E um get e um set apenas para fazer o mapeamento pelo Hibernate
public String getIdCliente()
{
return getCliente().getId();
}
public void setIdCliente(String valor)
{
// Chame o código que instancia a classe Cliente a partir do seu Id.
}
}
A classe compra teria um campo chamado idCliente mapeado no seu arquivo do Hibernate. Isto iria tapear o Hibernate e criar um relacionamento virtual entre as duas classes, estando cada uma contendo seus dados persistidos em um banco de dados diferente.
Não sei se é uma solução elegante ou não, mas funciona. Espero que lhe seja de alguma utilidade. Precisando de alguma coisa, é só procurar.