Hibernate Factory - Como passar parâmetros para conexão?

Bom dia amigos,

Estou desenvolvendo um sistema no qual de acordo com a opção selecionada pelo usuário uma base de dados é acessada.
Já criei a classe HibernateFactory para fazer a conexão com o banco e está funcionando direitinho.
Só que eu tenho que passar para esta classe os dados para a conexão de acordo com a opção selecionada pelo usuário.
MInha dúvida é, como passar estas informações(url, username e password)?

Segue a minha HibernateFactory.java

public class HibernateFactory {

    private static SessionFactory factory;

    static {

        try {

            AnnotationConfiguration cfg = new AnnotationConfiguration();

            cfg.addAnnotatedClass(Curso.class);           
            cfg.addAnnotatedClass(Professor.class);
            cfg.addAnnotatedClass(Disciplina.class);

            factory = cfg.buildSessionFactory();

        } catch (Exception ex) {
            System.out.println("e: " + ex.getMessage());
            ex.printStackTrace();

        }
    }

    public Session getSession() {        
        return factory.openSession();
    }
}

Segue a forma como eu utilizo a classe HibernateFactory

...
Session session = new HibernateFactory().getSession();

ProfessorDAO professorDAO = new ProfessorDAO(session);

List listaProf = professorDAO.listaTudo();
...

Aguradeço a atenção de todos.

use o comando… cfg.addPorperty

ai com os valores das variáveis url, pass, user … vc pode fazer

cfg .addPorperty("hibernate.connection.url",url) .addPorperty("hibernate.connection.username",user) .addPorperty("hibernate.connection.password.",pass)

Desculpe retomar esse tópico antigo mas tenho uma pergunto sobre o assunto.

O bloco static é chamado quando se inicia a classe pela primeira vez certo?

Como faço para passar esses valores? No caso quando a aplicação inicar quero passar o arquivo de configuração que deve ser inicializado…

Posso passar pelo construtor?

Nas propriedades como está acima como declaro esses valores para as variáveis antes do static ser chamado?