Tenho o seguinte código
@ApplicationScoped
@Resource
public class SessionFactoryCreator implements ComponentFactory<SessionFactory> {
private final SessionFactory factory;
public SessionFactoryCreator() {
this.factory = HibernateUtilities.getSessionFactory();
}
public SessionFactory getInstance() {
return this.factory;
}
@PreDestroy
public void destroy() {
if (!this.factory.isClosed())
this.factory.close();
}
}
Repositorio
public class CategoriasImpl implements Categorias {
private Session session;
public CategoriasImpl(Session session) {
this.session = session;
}
...
}
Funciona ok, porém minha aplicação agora tem de acessar uma segunda base. Então eu teria duas SessionFactory, algo assim
public class CategoriasImpl implements Categorias {
private Session sessionPrimaria;
private Session sessionSecundaria;
public CategoriasImpl(Session sessionPrimaria, Session sessionSecundaria) {
this. sessionPrimaria = sessionPrimaria;
this. sessionSecundaria = sessionSecundaria;
}
...
}
Gostaria de saber se:
a) tem uma maneira de fazer isso já prevista?
b) caso contrário, quando o objeto ‘CategoriasImpl’ é criado o vraptor chama duas vezes o método getInstance, certo? Eu tenho como saber quem está chamando? se eu souber eu teria como retornar o SessionFactory certo…
[]s
PS. não fico feliz com isso, mas eu tenho de usar duas bases