Pessoal estou com uma duvida sobre escalabilidade de banco de dados usando vraptor + hibernate
Tenho o seguinte modelo de replicação Master(para inserts e updates) + n Slaves(para selects)…
Mas se meu hibernate.cfg.xml so tem apenas 1 banco de dados
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/banco</property>
<property name="hibernate.connection.username">usuario</property>
<property name="hibernate.connection.password">senha</property>
e uso o componente pronto
br.com.caelum.vraptor.util.hibernate.HibernateCustomProvider
que injeta apenas uma Session relativa ao banco de dados MASTER no caso e seguindo o dao
@Component
public class EmailPanelDao implements Dao{
private Session session;
public EmailPanelDao(Session session) {
this.session = session;
}
public EmailPanel load(Long id) {
//Teoricamente ele teria que fazer isso de 1 SLAVE
return (EmailPanel) this.session.load(EmailPanel.class, id);
}
public void insert(EmailPanel emailpanel) {
//Teoricamente ele teria que fazer isso para o master
this.session.save(emailpanel);
}
}
Como ele distinguiria para qual banco de dados apontar…e se eu tiver N slaves???
Existe algo em java que torna isso transparente??
Obrigado pelas explicações…