Hibernate 3 - Mais de um banco de dados

Pessoal,

Preciso configurar duas bases de dados para o hibernate ao mesmo tempo. Como poderia fazer isso?

Abs
Renan

Crie quantas instâncias de SessionFactory for necessário.

Como eu defino a conexão a ser utilizada definida no hibernate.properties para cada SessionFactory?

Você tem algum código de exemplo?

Abs
Renan

Exatamente, você configura a conexão com o banco em cada hibernate.cfg.xml que vai ser passado para o SessionFactory.

abstract HibernateUtil

   /* Crie essa classe para manipular suas SessionFactory tal como adquirir a sessao, fechar sessao, iniciar transações e etc..*/ 

DB1Helper extends HibernateUtil

private static SessionFactory sessionFactory = new Configuration().configure( "br/com/app/DAO/hibernateDB1.cfg.xml" ).buildSessionFactory();  

//Use os métodos de HibernateUtil

DB2Helper extends HibernateUtil

private static SessionFactory sessionFactory = new Configuration().configure( "br/com/app/DAO/hibernateDB2.cfg.xml" ).buildSessionFactory();  

//Use os métodos de HibernateUtil

Dai agora quando for usar o banco 1 faça DB1Helper.getSession().createCriteria … e quando for usar o banco dois faça DB2Helper.getSession().createCriteria … e assim por diante.

Mais ou menos isso, deu para entender agora?

Perfeito cara,

No meu caso eram arquivos .properties, e como o construtor do AnnotationConfiguration pega por default as propriedades do hibernate.properties, tive que renomear este arquivo e configura-lo manualmente, segue o código caso haja curiosidade.

Abs
Renan


        AnnotationConfiguration cfg = new AnnotationConfiguration();
        Properties properties = new Properties();
	try {
		properties.load(HibernateUtility.class.getResourceAsStream("/hibernate_config.properties"));
	} catch (IOException e) {
		throw new RuntimeException(e);
	}
        cfg.addProperties(properties); 
        factory = cfg.buildSessionFactory();