E ae galera,
De boa?
Como eu devo configurar meu hibernate.cfg.xml para trabalhar com dois bancos de dados simultaneos.
Meu hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.username">
csempre
</property>
<property name="hibernate.connection.password">
%+Pre16!
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/csempre_db
</property>
<!-- configuration pool via c3p0-->
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">100</property> <!-- seconds -->
<!-- DEPRECATED very expensive property name="c3p0.validate>-->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping class="br.com.softsol.compresempre.modelo.Acesso"/>
<mapping class="br.com.softsol.compresempre.modelo.Administrador"/>
<mapping class="br.com.softsol.compresempre.modelo.Auditoria"/>
<mapping class="br.com.softsol.compresempre.modelo.Atividade"/>
<mapping class="br.com.softsol.compresempre.modelo.Bairro"/>
<mapping class="br.com.softsol.compresempre.modelo.Cidade"/>
<mapping class="br.com.softsol.compresempre.modelo.CodigoFiscalOperacoesPrestacoes"/>
<mapping class="br.com.softsol.compresempre.modelo.CodigoSituacaoTributaria"/>
<mapping class="br.com.softsol.compresempre.modelo.Comissao"/>
<mapping class="br.com.softsol.compresempre.modelo.Desconto"/>
<mapping class="br.com.softsol.compresempre.modelo.Empresa"/>
<mapping class="br.com.softsol.compresempre.modelo.Estado"/>
<mapping class="br.com.softsol.compresempre.modelo.FormaPagamento"/>
<mapping class="br.com.softsol.compresempre.modelo.Fornecedor"/>
<mapping class="br.com.softsol.compresempre.modelo.Frete"/>
<mapping class="br.com.softsol.compresempre.modelo.Grupo"/>
<mapping class="br.com.softsol.compresempre.modelo.GrupoFornecedor"/>
<mapping class="br.com.softsol.compresempre.modelo.Item"/>
<mapping class="br.com.softsol.compresempre.modelo.MenorPreco"/>
<mapping class="br.com.softsol.compresempre.modelo.Orcamento"/>
<mapping class="br.com.softsol.compresempre.modelo.Produto"/>
<mapping class="br.com.softsol.compresempre.modelo.ProdutoDestaque"/>
<mapping class="br.com.softsol.compresempre.modelo.ProdutoEmpresa"/>
<mapping class="br.com.softsol.compresempre.modelo.RegimeTributario"/>
<mapping class="br.com.softsol.compresempre.modelo.Subgrupo"/>
<mapping class="br.com.softsol.compresempre.modelo.TipoProduto"/>
<mapping class="br.com.softsol.compresempre.modelo.Unidade"/>
<mapping class="br.com.softsol.compresempre.modelo.Usuario"/>
</session-factory>
</hibernate-configuration>
Eu tenho duas classes. Uma para criar a sessão e outra para criar a fábrica de sessão.
Criador de Session
package br.com.softsol.compresempre.infra;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.Session;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
import org.hibernate.SessionFactory;
/**
* @author Wesley Martins
* @last update 21/01/2013
*/
@Component
public class CriadorDeSession implements ComponentFactory<Session> {
private SessionFactory factory;
private Session session;
public CriadorDeSession(SessionFactory factory) {
this.factory = factory;
}
@PostConstruct
public void abre() {
this.session = factory.openSession();
}
public Session getInstance() {
return this.session;
}
@PreDestroy
public void fecha() {
this.session.close();
}
}
Fábrica de Sessão
[code]
package br.com.softsol.compresempre.infra;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
/**
- @author Wesley Martins
-
@last update 21/01/2013
*/
@ApplicationScoped
@Component
public class CriadorDeSessionFactory implements
ComponentFactory<SessionFactory> {
private SessionFactory factory;
@PostConstruct
public void abre() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
this.factory = configuration.buildSessionFactory();
}
public SessionFactory getInstance() {
return this.factory;
}
@PreDestroy
public void fecha() {
this.factory.close();
}
}[/code]
No meu dao, eu chamo assim.
[code]
package br.com.softsol.compresempre.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.vraptor.ioc.Component;
import br.com.softsol.compresempre.modelo.Acesso;
/**
- @author Wesley Martins
-
@last update 21/01/2013
*/
@Component
public class AcessoDAO {
private final Session session;
public AcessoDAO(Session session) {
this.session = session;
}
public void salva(Acesso acesso) {
Transaction tx = session.beginTransaction();
session.save(acesso);
tx.commit();
}
}[/code]
Valeu!!!